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
真正的ZIP文件操作类(php)
Jul 21 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
PHP临时文件的安全性分析
Jul 04 PHP
Yii调试SQL的常用方法
Jul 09 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
php函数式编程简单示例
Aug 08 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php将字符串转换为数组实例讲解
May 05 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读取超大文件的实例代码
2012/04/01 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
$.format,jquery.format 使用说明
2011/07/13 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
动态创建样式表在各浏览器中的差异测试代码
2011/09/13 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
2016/06/03 Javascript
Bootstrap栅格系统简单实现代码
2017/03/06 Javascript
js a标签点击事件
2017/03/30 Javascript
Linux系统中利用node.js提取Word(doc/docx)及PDF文本的内容
2017/06/17 Javascript
Vue组件化通讯的实例代码
2017/06/23 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
2017/07/05 Javascript
JS如何设置元素样式的方法示例
2017/08/28 Javascript
Vue 框架之键盘事件、健值修饰符、双向数据绑定
2018/11/14 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
Python中DJANGO简单测试实例
2015/05/11 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
历史系毕业生自荐信
2013/10/28 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
警示教育活动总结
2014/05/05 职场文书
运动会加油口号
2014/06/07 职场文书
租房协议书范文
2014/08/20 职场文书