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 foreach 参数强制类型转换的问题
Dec 10 PHP
php入门学习知识点七 PHP函数的基本应用
Jul 14 PHP
header跳转和include包含问题详解
Sep 08 PHP
浅谈php命令行用法
Feb 04 PHP
php ajax实现文件上传进度条
Mar 29 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
验证坐标在某坐标区域内php代码
Oct 08 PHP
利用PHP抓取百度阅读的方法示例
Dec 18 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 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报表之jpgraph柱状图实例代码
2011/08/22 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
JavaScript this 深入理解
2009/07/30 Javascript
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
JAVASCRIPT style 中visibility和display之间的区别
2010/01/22 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
JavaScript高级程序设计(第3版)学习笔记3 js简单数据类型
2012/10/11 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
python-itchat 获取微信群用户信息的实例
2019/02/21 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
python 图像增强算法实现详解
2021/01/24 Python
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
YII2 全局异常处理深入讲解
2021/03/24 PHP
学生安全责任书
2014/04/15 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
MySQL数据迁移相关总结
2021/04/29 MySQL
探究Mysql模糊查询是否区分大小写
2021/06/11 MySQL
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers