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添加MySQL数据记录代码
Jun 07 PHP
php minixml详解
Jul 19 PHP
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
Apr 22 PHP
php连接Access数据库错误及解决方法
Jun 20 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
php字符串替换函数substr_replace()用法实例
Mar 17 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
Jul 29 PHP
php实现分页显示
Nov 03 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
tp5递归 无限级分类详解
Oct 18 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
网络资源
2006/10/09 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
pandas读取csv文件提示不存在的解决方法及原因分析
2020/04/21 Python
使用openCV去除文字中乱入的线条实例
2020/06/02 Python
python如何更新包
2020/06/11 Python
谈一谈HTML5本地存储技术
2016/03/02 HTML / CSS
运动会广播稿300字
2014/01/10 职场文书
幼儿园义卖活动方案
2014/01/17 职场文书
关工委先进个人事迹材料
2014/05/23 职场文书
德育标兵事迹材料
2014/08/24 职场文书
上课随便讲话检讨书
2014/09/12 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
全陪导游词开场白
2015/05/29 职场文书
Django实现在线无水印抖音视频下载(附源码及地址)
2021/05/06 Python
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
Win11 BitLocker 驱动器加密
2022/04/19 数码科技