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 相关文章推荐
一个用于mysql的数据库抽象层函数库
Oct 09 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
Apr 17 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
PHP的PSR规范中文版
Sep 28 PHP
php获取数组长度的方法(有实例)
Oct 27 PHP
php实现保存submit内容之后禁止刷新
Mar 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
Jun 25 PHP
php中unserialize返回false的解决方法
Sep 22 PHP
PHP生成压缩文件实例
Feb 07 PHP
php保存任意网络图片到服务器的方法
Apr 14 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 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和ACCESS写聊天室(六)
2006/10/09 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
Move.js入门
2017/02/08 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
微信小程序实现带缩略图轮播效果
2018/11/04 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[01:14]TI珍贵瞬间系列(六):冠军
2020/08/30 DOTA
Python Django使用forms来实现评论功能
2016/08/17 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python操作MongoDB详解及实例
2017/05/18 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
python try 异常处理(史上最全)
2019/03/07 Python
Django框架模板文件使用及模板文件加载顺序分析
2019/05/23 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
Flask框架 CSRF 保护实现方法详解
2019/10/30 Python
python对Excel的读取的示例代码
2020/02/14 Python
利用python画出AUC曲线的实例
2020/02/28 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
python中最小二乘法详细讲解
2021/02/19 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
2014优秀大学生简历自我评价
2014/09/15 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
详解Python中的进程和线程
2021/06/23 Python