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之sphinx
May 15 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
PHP中怎样防止SQL注入分析
Oct 23 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
CodeIgniter框架基本增删改查操作示例
Mar 23 PHP
PHP递归的三种常用方式
Feb 28 PHP
php慢查询日志和错误日志使用详解
Feb 27 PHP
PHP常用字符串输出方法分析(echo,print,printf及sprintf)
Mar 09 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 输出双引号&quot;与单引号'的方法
2010/05/09 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
Bootstrap中datetimepicker使用小结
2016/12/28 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
Python中特殊函数集锦
2015/07/27 Python
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python实现文件信息进行合并实例代码
2018/01/17 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
教你使用Canvas处理图片的方法
2017/11/28 HTML / CSS
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
方正Java笔试题
2014/07/03 面试题
abstract class和interface有什么区别
2013/08/04 面试题
会计专业自荐信
2013/12/02 职场文书
九年级政治教学反思
2014/02/06 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
销售内勤岗位职责
2014/04/15 职场文书
咖啡厅商业计划书
2014/09/15 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
uwsgi+nginx代理Django无法访问静态资源的解决
2021/05/10 Servers