ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

二十五、PHP框架Laravel学习笔记——模型的一对一关联

2021-05-30 17:29:36  阅读:156  来源: 互联网

标签:Laravel Profile php 一对一 关联 user PHP id


一.关联概念

  1. 关联模型,即:两张或以上的表进行一定规则的绑定关联;
  2. 比如:一个学生(学生表)对应一张个人信息卡(信息表),这种就是一对一;
  3. 再比如:一篇博文(帖子表)对应多个评论(评论表),这种就是一对多;
  4. 再再比如:一个用户(用户表)对应多个职位(权限表), 而一个职位又可以有多个用户;那么,这种就是多对多关联;
  5. 自然,还有更多更复杂的关联,都是基于此的,我们只探讨这三种;
  6. 既然是关联,当然会有绑定的概念,当有数据库操作,关联表也会跟着变动;
  7. 这就是关联模型的意义;

二.一对一关联

  1. 一对一关联,我们选择两张表来做演示,首先看下两张表的结果对比;
    在这里插入图片描述
    PS:主表主键设为 id,关联主键默认就是 id,可以默认不写;
    PS:附表的外键设置为 user_id,即:主表名_主键,吻合可默认不写;

  2. 由于之前 Models 下的 User.php 模型代码很多了,改成.bak 后重建;
    在这里插入图片描述

  3. 创建两个 model,User.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'); } 

在这里插入图片描述

在这里插入图片描述

  1. 注意:Profile.php 只要建立空类即可,不需要其它,一对一调用如下:
    //注意:->profile 不要加括号,以属性方式访问
$profiles = User::find(19)->profile; return $profiles;
  1. 一对一也支持反向关联:定向反向关联;具体通过在 Profile 设置即可; //profile.php
    //参数 1 为主表类
    //参数 2,3 和正向一致,默认对应可以不写
public function user() { 
	return $this->belongsTo(User::class, 'user_id', 'id'); }
	$users = Profile::find(1)->user; 
	return $users;

在这里插入图片描述

标签:Laravel,Profile,php,一对一,关联,user,PHP,id
来源: https://blog.csdn.net/weixin_44827418/article/details/117400693

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有