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 相关文章推荐
DedeCms模板安装/制作概述
Mar 11 PHP
PHP MSSQL 存储过程的方法
Dec 24 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
php实现给一张图片加上水印效果
Jan 02 PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 PHP
PHP多维数组排序array详解
Nov 21 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
详解php协程知识点
Sep 21 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
Mar 22 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
thinkphp的c方法使用示例
2014/02/24 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
tp5(thinkPHP5框架)使用DB实现批量删除功能示例
2019/05/28 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
2014/09/03 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
利用JS实现scroll自定义滚动效果详解
2017/10/17 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
python实现字符串和日期相互转换的方法
2015/05/13 Python
Python中用于计算对数的log()方法
2015/05/15 Python
Python中title()方法的使用简介
2015/05/20 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python 错误和异常代码详解
2018/01/29 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
python 实现端口扫描工具
2020/12/18 Python
生活部的活动方案
2014/08/19 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
python爬取网页版QQ空间,生成各类图表
2021/06/02 Python
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技