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函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
php的array数组和使用实例简明教程(容易理解)
Mar 20 PHP
php 使用GD库为页面增加水印示例代码
Mar 24 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
Nov 19 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
给WordPress中的留言加上楼层号的PHP代码实例
Dec 14 PHP
php获取当前页面完整URL地址
Dec 30 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
php静态成员方法和静态的成员属性的使用方法
Oct 26 PHP
PHP实现用户登录的案例代码
May 10 PHP
PHP中16个高危函数整理
Sep 19 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创建多级目录代码
2008/06/05 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP一致性hash分布式算法封装类定义与用法示例
2018/08/04 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
js onpropertychange输入框 事件获取属性
2009/03/26 Javascript
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
js中字符型和数值型数字的互相转化方法(必看)
2017/04/25 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
解决vue axios的封装 请求状态的错误提示问题
2018/09/25 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
vue实现短信验证码登录功能(流程详解)
2019/12/10 Javascript
[00:37]2016完美“圣”典风云人物:rOtk宣传片
2016/12/09 DOTA
python中的多重继承实例讲解
2014/09/28 Python
python监控文件或目录变化
2016/06/07 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
python超时重新请求解决方案
2019/10/21 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
python实现飞机大战项目
2020/03/11 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
周年庆典主持词
2014/04/02 职场文书
优秀教师演讲稿
2014/05/06 职场文书
疾病防治方案
2014/05/31 职场文书
培训讲师开场白
2015/06/01 职场文书
市场营销计划书
2019/04/24 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
php实现自动生成验证码的实例讲解
2021/11/17 PHP
python脚本框架webpy模板赋值实现
2021/11/20 Python