浅谈laravel5.5 belongsToMany自身的正确用法


Posted in PHP onOctober 17, 2019

场景

用户之间相互关注,记录这种关系的是followers表(follower_id 发起关注的人 followed_id被关注的人)

现在的多对多的关系就不再是传统的三张表的关系了, 这种情况 多对多关系应该怎么声明呢?

分析

laravel或者其他框架多对多的关系 一般都是由Model1 Model2 Model1_Model2(声明两者关系的表)来组成,

但是上面的场景 却是只有两张表,这时候就要研究下官方文档了; 当然是支持的

参考资料

https://laravel.com/docs/5.6/eloquent-relationships#many-to-many

In addition to customizing the name of the joining table, you may also customize the column names of the keys on the table by passing additional arguments to the belongsToMany method. The third argument is the foreign key name of the model on which you are defining the relationship, while the fourth argument is the foreign key name of the model that you are joining to:

belongsToMany方法传递的参数是可以定制的 以达到个性化的需求,

第一个参数是 第二个Model

第二个参数是 关系表名

第三个参数是 第一个Model在关系表中的外键ID

第四个参数是 第二个Model在关系表中的外键ID

解决

经过分析

1. 第一个Model是User 第一个Model也是User

2. 关系表名是 'followers'

/**
  * 关注当前用户的
  * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
  */
 public function followers()
 {
  return $this->belongsToMany(self::class, 'followers', 'followed_id','follower_id')->withTimestamps()
   ->withTimestamps();
 }

 /**
  * 被当前用户关注的用户
  */
 public function followed()
 {
  return $this->belongsToMany(self::class, 'followers', 'follower_id', 'followed_id');
 }

以上这篇浅谈laravel5.5 belongsToMany自身的正确用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
强烈推荐:php.ini中文版(1)
Oct 09 PHP
php和javascript之间变量的传递实现代码
Dec 19 PHP
PHP常用的文件操作函数经典收藏
Apr 02 PHP
解析php安全性问题中的:Null 字符问题
Jun 21 PHP
PHP中Header使用的HTTP协议及常用方法小结
Nov 04 PHP
php获取本机真实IP地址实例代码
Mar 31 PHP
PHP中header用法小结
May 23 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
简单实现php上传文件功能
Sep 21 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 13 PHP
解决laravel5.4下的group by报错的问题
Oct 16 #PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 #PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 #PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 #PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 #PHP
关于laravel 子查询 & join的使用
Oct 16 #PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 #PHP
You might like
Ajax提交表单时验证码自动验证 php后端验证码检测
2016/07/20 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP中trait使用方法详细介绍
2017/05/21 PHP
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
Jquery Ajax方法传值到action的方法
2014/05/11 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
JS验证全角与半角及相互转化的介绍
2017/05/18 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
antd Upload 文件上传的示例代码
2018/12/14 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
tensorflow更改变量的值实例
2018/07/30 Python
Python基础教程之异常详解
2019/01/10 Python
Python字典的核心底层原理讲解
2019/01/24 Python
详解如何减少python内存的消耗
2019/08/09 Python
python3注册全局热键的实现
2020/03/22 Python
解析Tensorflow之MNIST的使用
2020/06/30 Python
用python对excel查重
2020/12/07 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
匡威德国官网:Converse德国
2019/01/26 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
.NET概念性的面试题
2012/02/29 面试题
售后服务承诺书怎么写
2014/05/21 职场文书
工作目标责任书
2014/07/23 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
聊聊JS ES6中的解构
2021/04/29 Javascript