首页 Order Laravel 正文

Laravel 模型的一对一关联

金鹏头像 金鹏 Laravel 2022-04-01 13:04:41 0 308
导读:一.关联概念1.关联模型,即:两张或以上的表进行一定规则的绑定关联;2.  比如:一个学生(学生表)对应一张个人信息卡(信息表),这种就是一对一;3.&nbs...
.关联概念

1. 关联模型,即:两张或以上的表进行一定规则的绑定关联;

2.  比如:一个学生(学生表)对应一张个人信息卡(信息表),这种就是一对一;

3. 再比如:一篇博文(帖子表)对应多个评论(评论表),这种就是一对多;

4. 再再比如:一个用户(用户表)对应多个职位(权限表)

一个职位又可以有多个用户;那么,这种就是多对多关联;

5.  自然,还有更多更复杂的关联,都是基于此的,我们只探讨这三种;

6. 既然是关联,当然会有绑定的概念,当有数据库操作,关联表也会跟着变动

7. 这就是关联模型的意义;

 

二.一对一关

1. 一对一关联,我们选择两张表来做演示,首先看下两张表的结果对比

图片.png

PS:主主键设为 id,关联主键默认就是 id,可以默认不写;

PS:附的外键设置为 user_id,即:主表名_主键,吻合可默认不写;

 

3.  由于之前 Models 下的 User.php 模型代码很多了,改成 .bak 后重建;

4. 创建两个 modelUser.php  Profile.php,并使用命令实现提示; php artisan ide-helper:models

 

//User.php,一对一关联 Profile 

public function profile()

{

//参数 1 或:  'App\Http\Models\Profile '

//参数 2:默认为 user_id,如不是需要指明

//参数 3:默认 id,如不是需要指明

return $this->hasOne(Profile ::class, 'user_id ', 'id ');

}

 

5. 注意:Profile.php 只要建立空类即可,不需要其它,一对一调用如下:

//注意:  ->profile 不要加括号,以属性方式访问

$profiles = User ::find(19)->profile;

return $profiles;

 

6.  一对一也支持反向关联:定向反向关联;具体通过在 Profile 设置即可;

//profile.php

//参数 1 为主表类

// 23 和正向一致,默认对应可以不写

public function user()

{

return $this->belongsTo(User ::class, 'user_id ', 'id ');

}

 

$users = Profile ::find(1)->user;

                   return $users;


本文地址:https://www.jinpeng.work/?id=170
若非特殊说明,文章均属本站原创,转载请注明原链接。
广告3

欢迎 发表评论:

  • 请填写验证码

日历

«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930

控制面板

您好,欢迎到访网站!
  查看权限
广告2

退出请按Esc键