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编程最快明白》第五讲:php目录、文件操作
Nov 01 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
PHP 基于文件头的文件类型验证类函数
May 01 PHP
php 深入理解strtotime函数的使用详解
May 23 PHP
深入PHP异步执行的详解
Jun 03 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
php中adodbzip类实例
Dec 08 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
PHP中一个有趣的preg_replace函数详解
Aug 15 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 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中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
PHP可变变量学习小结
2015/11/29 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
Javascript实例教程(19) 使用HoTMetal(3)
2006/12/23 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
jQuery 获取/设置/删除DOM元素的属性以a元素为例
2014/05/23 Javascript
js控制文本框输入的字符类型方法汇总
2015/06/19 Javascript
JavaScript判断对象是否为数组
2015/12/22 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
使用JavaScript破解web
2018/09/28 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
Vue Router 实现动态路由和常见问题及解决方法
2020/03/06 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
Python实现给文件添加内容及得到文件信息的方法
2015/05/28 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
利用pandas将numpy数组导出生成excel的实例
2018/06/14 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
基于h5py的使用及数据封装代码
2019/12/26 Python
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
大专学生求职信
2014/07/04 职场文书
党员一帮一活动总结
2014/07/08 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
地道战观后感300字
2015/06/04 职场文书
环境卫生标语
2015/08/03 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
分析Python list操作为什么会错误
2021/11/17 Python