Laravel5.1 框架模型一对一关系实现与使用方法实例分析
发布:smiling 来源: PHP粉丝网 添加日期:2022-02-03 20:37:19 浏览: 评论:0
本文实例讲述了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' => $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
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);
Tags: Laravel5.1一对一关系
- 上一篇:Laravel5.1 框架模型查询作用域定义与用法实例分析
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)