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 Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
php checkdate、getdate等日期时间函数操作详解
Mar 11 PHP
PHP中的integer类型使用分析
Jul 27 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 PHP
php cli模式学习(PHP命令行模式)
Jun 03 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
PHP session会话操作技巧小结
Sep 27 PHP
PHP文件操作详解
Dec 30 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
laravel 中某一字段自增、自减的例子
Oct 11 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
jQuery源码分析之Event事件分析
2010/06/07 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
javascript实现密码验证
2015/11/10 Javascript
JavaScript提升性能的常用技巧总结【经典】
2016/06/20 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
Angular的$http与$location
2016/12/26 Javascript
js实现一个猜数字游戏
2017/03/31 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
2020/07/26 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
python实现简单温度转换的方法
2015/03/13 Python
python3.5仿微软计算器程序
2020/03/30 Python
python用reduce和map把字符串转为数字的方法
2016/12/19 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Pytorch evaluation每次运行结果不同的解决
2020/01/02 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
质检部部长职责
2013/12/16 职场文书
党校培训思想汇报
2013/12/30 职场文书
个人对照检查材料
2014/02/12 职场文书
新闻通讯稿模板
2015/07/22 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android