• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-01) 34次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了Laravel5.1 框架模型一对一关系实现与使用方法,结合实例形式分析了laravel5.1框架模型一对一关系的原理、定义与使用方法,需要的朋友可以参考下

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

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

1 实现一对一关系

1.1 准备工作

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

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

1.1.1 用户信息表

生成模型和迁移文件:

 php artisan make:model UserInfo -m 

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

 public function up() { Schema::create('user_infos', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('phone_number');     // 手机号 $table->timestamps(); }); } 

编写模型工厂:

 // user_info $factory->define(App\UserInfo::class, function (Faker\Generator $faker) { return [ 'name' => $faker->name, 'phone_number' => $f<strong style="color:transparent">来源gaodaima#com搞(代@码网</strong>aker->phoneNumber, ]; }); 

使用seeder:

 php artisan make:seeder UserInfoSeeder 
 public function run() { factory(\App\UserInfo::class, 10)->create(); } public function run() { Model::unguard(); $this->call('UserInfoSeeder'); Model::reguard(); } 

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

 php artisan migrate:seeder 

1.1.2 账号表

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

 public function up() { Schema::create('accounts', function (Blueprint $table) { $table->increments('id'); $table->string('user_name');    // 用户名 $table->integer('user_info_id');  // 关联键 $table->timestamps(); }); } 

2 编写关系

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

 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的主键名。

然后是用户信息表:

 public function account() { return $this->hasOne(Account::class); } 

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

使用:

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

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

以上就是Laravel5.1 框架模型一对一关系实现与使用方法实例分析的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Laravel5.1 框架模型一对一关系实现与使用方法实例分析

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址