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编程效率的53个要点(经验小结)
Sep 04 PHP
php debug 安装技巧
Apr 30 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
30个php操作redis常用方法代码例子
Jul 05 PHP
PHP生成条形图的方法
Dec 10 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
PHP答题类应用接口实例
Feb 09 PHP
php字符串函数学习之substr()
Mar 27 PHP
php项目中百度 UEditor 简单安装调试和调用
Jul 15 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP的new static和new self的区别与使用
Nov 27 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
优化使用mysql存储session的php代码
2008/01/10 PHP
hessian 在PHP中的使用介绍
2010/12/13 PHP
详解PHP序列化反序列化的方法
2015/10/27 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
PHP用函数嵌入网站访问量计数器
2017/10/27 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
laravel model 两表联查示例
2019/10/24 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
提交表单时执行func方法实现代码
2013/03/17 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
jquery实现的仿天猫侧导航tab切换效果
2015/08/24 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
JS在一定时间内跳转页面及各种刷新页面的实现方法
2016/05/26 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
Vue中错误图片的处理的实现代码
2019/11/07 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
python实现socket端口重定向示例
2014/02/10 Python
关于python的list相关知识(推荐)
2017/08/30 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
Python3 操作符重载方法示例
2017/11/23 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
python绘制地震散点图
2019/06/18 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
淘宝秒杀python脚本 扫码登录版
2019/09/19 Python
python如何编写win程序
2020/06/08 Python
python和go语言的区别是什么
2020/07/20 Python
优秀党员申报材料
2014/12/18 职场文书
东京审判观后感
2015/06/01 职场文书
同乡会致辞
2015/07/30 职场文书