浅谈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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
php SQL Injection with MySQL
Feb 27 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
php stream_get_meta_data返回值
Sep 29 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
浅析PHP中的i++与++i的区别及效率
Jun 15 PHP
php文件上传、下载和删除示例
Aug 28 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
Laravel监听数据库访问,打印SQL的例子
Oct 24 PHP
php+laravel依赖注入知识点总结
Nov 04 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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
理解php原理的opcodes(操作码)
2010/10/26 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
php精度计算的问题解析
2019/06/21 PHP
javascript 上下banner替换具体实现
2013/11/14 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
VSCode插件安装完成后的配置(常用配置)
2020/08/24 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
Python线程中对join方法的运用的教程
2015/04/09 Python
python中循环语句while用法实例
2015/05/16 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
对Python中gensim库word2vec的使用详解
2018/05/08 Python
详解Python if-elif-else知识点
2018/06/11 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
python实现双人五子棋(终端版)
2020/12/30 Python
python爬虫破解字体加密案例详解
2021/03/02 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
汽车专业毕业生推荐信
2013/11/12 职场文书
小学生个人先进事迹材料
2014/05/08 职场文书
文明演讲稿范文
2014/05/12 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
趣味运动会加油词
2015/07/18 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python