Laravle eloquent 多对多模型关联实例详解


Posted in PHP onNovember 22, 2017

什么是多对多关联?

Eloquent中一个模型就是一个数据表,数据表之间通常会有关联,多对多关联就是2个表之间相互有很多关联,比如说:一个表存放了用户数据,

Laravle eloquent 多对多模型关联实例详解 

另一个表存放了文章的信息,

Laravle eloquent 多对多模型关联实例详解 

一个用户可以收藏多篇文章,一篇文章也可以被多个用户收藏,这就是 多对多关联 。

怎么用多对多关联?

使用Eloquent的多对多关联可以很便捷的互相查询、修改、增加、删除两个模型之间的关联。

多对多关联除了相互关联的两张表之外还需要一张记录关联的表(pivot表),一般记录两个模型的的ID就行

举个栗子

我们数据库里的三张表是user

Laravle eloquent 多对多模型关联实例详解 

articles

Laravle eloquent 多对多模型关联实例详解 

article_collections

Laravle eloquent 多对多模型关联实例详解 

我们需要创建2个模型,中间表模型不是必须的

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Entity{
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Articles extends Entity{
}

通过在模型里写一个方法调用belongToMany()方法并返回结果来获取数据。

belongToMany()里传入的第一个参数是对应表,第二个参数是中间表的表名,第三个参数是当前模型在中间表的键名,第四个参数是关联模型在中间表的键名。

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Entity{
  public function articles()
  {
   return $this->belongToMany(Articles::class, 'article_collections', 'user_id', 'article_id')
  }
}

这样我们就可以通过article方法得到user收藏的文章了

$articles = User::find(1)->articles()->get();

用where()、orderBy()等方法对查询的数据添加条件

用attach()方法添加关联,比如让id为1用户收藏id为1的article

$user = User::find(1);
$user->articles()->attach(1)

用detach()方法去除关联,方法和attach()一样。

OK 以上就是Laravel eloquent 多对多关联的一些基础知识了。

总结

以上所述是小编给大家介绍的Laravle eloquent 多对多模型关联实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
谈谈新手如何学习PHP
Dec 14 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
浅谈PHP变量作用域以及地址引用问题
Dec 27 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
May 04 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
ThinkPHP表单数据智能写入create方法实例分析
Sep 27 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
Yii使用技巧大汇总
Dec 29 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
php数据结构之顺序链表与链式线性表示例
Jan 22 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
php+iframe 实现上传文件功能示例
Mar 04 PHP
PHP多维数组排序array详解
Nov 21 #PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 #PHP
ecshop添加菜单及权限分配问题
Nov 21 #PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 #PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 #PHP
详解php语言最牛掰的Laravel框架
Nov 20 #PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 #PHP
You might like
第二节--PHP5 的对象模型
2006/11/16 PHP
不要轻信 PHP_SELF的安全问题
2009/09/05 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
2011/08/11 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
jQuery实用基础超详细介绍
2013/04/11 Javascript
JS HTML5 音乐天气播放器(Ajax获取天气信息)
2013/05/26 Javascript
node.js中的console.error方法使用说明
2014/12/10 Javascript
js获取内联样式的方法
2015/01/27 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
2016/06/25 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
Vue中关闭弹窗组件时销毁并隐藏操作
2020/09/01 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
解决pycharm上的jupyter notebook端口被占用问题
2019/12/17 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
python缩进长度是否统一
2020/08/02 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
汽车维修工岗位职责
2014/02/12 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
信息技术培训感言
2014/03/06 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
公司应聘自荐书
2014/06/14 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
学校师德师风整改措施
2014/10/27 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书