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 相关文章推荐
从零开始 教你如何搭建Discuz!4.1论坛
Jul 07 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP has encountered an Access Violation 错误的解决方法
Jan 17 PHP
php加速器eAccelerator的配置参数、API详解
May 05 PHP
php通过array_merge()函数合并两个数组的方法
Mar 18 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 PHP
php实现短信发送代码
Jul 05 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
php将print_r处理后的数据还原为原始数组的解决方法
Nov 02 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 PHP
PHP常用函数之格式化时间操作示例
Oct 21 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加密解密的代码
2007/07/16 PHP
让codeigniter与swfupload整合的最佳解决方案
2014/06/12 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
写的htc的数据表格
2007/01/20 Javascript
csdn 博客中实现运行代码功能实现
2009/08/29 Javascript
JavaScript 基于原型的对象(创建、调用)
2009/10/16 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
把input初始值不写value的具体实现方法
2013/07/04 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
jQuery中ScrollTo用法示例
2016/09/04 Javascript
基于JavaScript实现前端文件的断点续传
2016/10/17 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
webpack.DefinePlugin与cross-env区别详解
2020/02/23 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python微信公众号之关注公众号自动回复
2018/10/25 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
对Python 获取类的成员变量及临时变量的方法详解
2019/01/22 Python
Python使用eval函数执行动态标表达式过程详解
2020/10/17 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
Skyscanner波兰:廉价航班
2017/11/07 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
法国房车租赁网站:Yescapa
2019/08/26 全球购物
护理专业自荐信范文
2014/02/26 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
责任书格式范文
2014/07/28 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
党委工作总结2015
2015/04/27 职场文书
Python下opencv使用hough变换检测直线与圆
2021/06/18 Python