gpt4 book ai didi

Laravel5.1 框架模型一对一关系实现与使用方法实例分析

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Laravel5.1 框架模型一对一关系实现与使用方法实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Laravel5.1 框架模型一对一关系实现与使用方法。分享给大家供大家参考,具体如下:

这篇文章主要记录模型的一对一关系,关联关系是Model的一种非常方便的功能.

1 实现一对一关系

1.1 准备工作

首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表.

这里 我们的逻辑是:一个用户信息下只能有一个账号,一个账号只能被一个用户所拥有,这就是一对一关系.

1.1.1 用户信息表

生成模型和迁移文件:

?
1
php artisan make:model UserInfo -m

编写迁移文件(表规格):

?
1
2
3
4
5
6
7
8
9
public function up()
{
   Schema::create( 'user_infos' , function (Blueprint $table ) {
     $table ->increments( 'id' );
     $table ->string( 'name' );
     $table ->string( 'phone_number' );     // 手机号
     $table ->timestamps();
   });
}

编写模型工厂:

?
1
2
3
4
5
6
7
// user_info
$factory ->define(App\UserInfo:: class , function (Faker\Generator $faker ) {
   return [
     'name' => $faker ->name,
     'phone_number' => $faker ->phoneNumber,
   ];
});

使用seeder:

?
1
php artisan make:seeder UserInfoSeeder
?
1
2
3
4
5
6
7
8
9
10
public function run()
{
   factory(\App\UserInfo:: class , 10)->create();
}
public function run()
{
   Model::unguard();
   $this ->call( 'UserInfoSeeder' );
   Model::reguard();
}

生成数据并使用seeder填入数据:

?
1
php artisan migrate:seeder

1.1.2 账号表

编写迁移文件(表规格):

?
1
2
3
4
5
6
7
8
9
10
public function up()
{
   Schema::create( 'accounts' , function (Blueprint $table ) {
     $table ->increments( 'id' );
     $table ->string( 'user_name' );    // 用户名
     $table ->integer( 'user_info_id' );  // 关联键
     $table ->timestamps();
   });
}

2 编写关系

首先是账号表,在模型下编写以下代码:

?
1
2
3
4
public function user()
{
   return $this ->belongsTo(UserInfo:: class , 'user_info_id' , 'id' );
}

代码解读:belongsTo的第二个和第三个参数是完全可以省略的。如果省略了第二个和第三个参数的话 Laravel根据方法名自动填充,会把第二个参数填充成 "user_id" 第三个参数填充 "id",但是我们现在必须这样写,因为我自定义的外键是user_info_id 如果Laravel自动填充的话是找不到这个外键的 所以我们要手动的添加下.

belongsTo的第二个参数是 Account这个模型要用'user_info_id'外键去关联UserInfo模型.

belongsTo的第三个参数是 Account这个模型要关联UserInfo的主键名.

然后是用户信息表:

?
1
2
3
4
public function account()
{
   return $this ->hasOne(Account:: class );
}

代码解读:hasOne的第二个和第三个参数也是完全可以省略的。如果省略了第二个和第三个参数的话 Laravel会自动填充,会把第二个参数填充成 "user_info_id" 第三个参数填充 "id".

使用:

?
1
2
3
4
//  $account = App\Account::find(1);
//  dd($account->user);
   $userInfo = App\UserInfo::find(1);
   dd( $userInfo ->account);

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助.

原文链接:https://www.cnblogs.com/sun-kang/p/7524085.html 。

最后此篇关于Laravel5.1 框架模型一对一关系实现与使用方法实例分析的文章就讲到这里了,如果你想了解更多关于Laravel5.1 框架模型一对一关系实现与使用方法实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com