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实现用户认证及管理完全源码
Mar 11 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
php计算当前程序执行时间示例
Apr 24 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
Mar 21 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
Laravel框架FormRequest中重写错误处理的方法
Feb 18 PHP
详解PHP PDO简单教程
May 28 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
使用php的mail()函数实现发送邮件功能
Jun 03 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
sony ICF-2010 拆解与改装
2021/03/02 无线电
十天学会php(1)
2006/10/09 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
php中__toString()方法用法示例
2016/12/07 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
2018/05/30 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
Python3里的super()和__class__使用介绍
2015/04/23 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
python文字转语音实现过程解析
2019/11/12 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
深入理解Python变量的数据类型和存储
2021/02/01 Python
CSS3教程(10):CSS3 HSL声明设置颜色
2009/04/02 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
客户代表实习人员自我鉴定
2013/09/27 职场文书
综合素质的自我鉴定
2013/10/07 职场文书
教师实习的自我鉴定
2013/10/26 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
网络管理员岗位职责
2014/03/17 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
义卖募捐活动总结
2015/05/09 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书