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模板引擎SMARTY
Oct 09 PHP
使用PHP制作新闻系统的思路
Oct 09 PHP
用php实现的下载css文件中的图片的代码
Feb 08 PHP
PHP开发负载均衡指南
Jul 17 PHP
php xml 入门学习资料
Jan 01 PHP
PHP备份/还原MySQL数据库的代码
Jan 06 PHP
PHP图片验证码制作实现分享(全)
May 10 PHP
PHP5常用函数列表(分享)
Jun 07 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
Yii2框架数据库简单的增删改查语法小结
Aug 31 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
php操作redis数据库常见方法实例总结
Feb 20 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
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
浅谈PHP封装CURL
2019/03/06 PHP
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
puppeteer实现html截图的示例代码
2019/01/10 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
Python和C/C++交互的几种方法总结
2017/05/11 Python
深入理解Django-Signals信号量
2019/02/19 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
python实现静态web服务器
2019/09/03 Python
使用HTML5和CSS3表单验证功能
2017/05/05 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
英国索普公园票务和酒店套餐:Thorpe Breaks
2019/09/14 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
小学作文评语大全
2014/04/21 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
2014年学生会主席工作总结
2014/11/07 职场文书
房产分割协议书范文
2014/11/21 职场文书
档案工作个人总结
2015/03/03 职场文书
2015年驾驶员工作总结
2015/04/29 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
英语导游欢迎词
2015/09/30 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python