laravel实现一对一关系的方法是什么?
Admin 2021-05-25 群英技术资讯 1099 次浏览
本文主要给大家分享的是关于laravel框架模型一对一关系的内容,主要介绍一对一关系的实现以及使用,感兴趣的朋友可以参考学习,下面就跟随小编一起来看看吧。
首先我们需要创建两张表和对应的两个模型,第一个模型是用户表,第二个模型是账号表。这里 我们的逻辑是:一个用户信息下只能有一个账号,一个账号只能被一个用户所拥有,这就是一对一关系。
生成模型和迁移文件:
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' => $faker->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
编写迁移文件(表规格):
public function up() { Schema::create('accounts', function (Blueprint $table) { $table->increments('id'); $table->string('user_name'); // 用户名 $table->integer('user_info_id'); // 关联键 $table->timestamps(); }); }
首先是账号表,在模型下编写以下代码:
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实现一对一关系介绍就到这,上文有详细的实现步骤以及代码,希望能对大家有一定的帮助,想要了解更多laravel 一对一关系内容,大家可以继续关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
有时候我们需要使用正则表达式的预查功能,因此就需要了解正向预查与反向预查,这篇问文章就主要给大家介绍正向预查与反向预查的作用以及用法,具有一定的参考价值,感兴趣的朋友就继续往下看吧。
php长连接的介绍:1、长连接是指建立SOCKET连接后,无论是否使用,都保持连接,但安全性较差。2、长连接可以省去较多的TCP建立和关闭操作,减少资源浪费,节省时间。
如何在 Laravel 中使用 PHP 的装饰器模式?下面本篇文章就来给大家介绍一下Laravel中使用PHP装饰器模式的方法,希望对大家有所帮助!
学习PHP过程中,对于一些基本的排序算法大家还是需要掌握的,算法作为程序的核心,其好坏会影响到程序的质量,因此这篇文章就给大家介绍一些PHP常用排序算法的方法,文本还有PHP的实现代码,供大家参考,下面我们就来一起看看。
今天小编就为大家分享一篇laravel 错误处理,接口错误返回json代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008