浅谈laravel5.5 belongsToMany自身的正确用法
场景
用户之间相互关注,记录这种关系的是followers表(follower_id发起关注的人followed_id被关注的人)
现在的多对多的关系就不再是传统的三张表的关系了,这种情况多对多关系应该怎么声明呢?
分析
laravel或者其他框架多对多的关系一般都是由Model1Model2Model1_Model2(声明两者关系的表)来组成,
但是上面的场景却是只有两张表,这时候就要研究下官方文档了;当然是支持的
参考资料
https://laravel.com/docs/5.6/eloquent-relationships#many-to-many
Inadditiontocustomizingthenameofthejoiningtable,youmayalsocustomizethecolumnnamesofthekeysonthetablebypassingadditionalargumentstothebelongsToManymethod.Thethirdargumentistheforeignkeynameofthemodelonwhichyouaredefiningtherelationship,whilethefourthargumentistheforeignkeynameofthemodelthatyouarejoiningto:
belongsToMany方法传递的参数是可以定制的以达到个性化的需求,
第一个参数是第二个Model
第二个参数是关系表名
第三个参数是第一个Model在关系表中的外键ID
第四个参数是第二个Model在关系表中的外键ID
解决
经过分析
1.第一个Model是User第一个Model也是User
2.关系表名是'followers'
/** *关注当前用户的 *@return\Illuminate\Database\Eloquent\Relations\BelongsToMany */ publicfunctionfollowers() { return$this->belongsToMany(self::class,'followers','followed_id','follower_id')->withTimestamps() ->withTimestamps(); } /** *被当前用户关注的用户 */ publicfunctionfollowed() { return$this->belongsToMany(self::class,'followers','follower_id','followed_id'); }
以上这篇浅谈laravel5.5belongsToMany自身的正确用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。