我正在開發一個CRM,其中有一個用戶模型,可以與其他用戶建立多對多關係,並通過數據透視表定義一種關係類型。Laravel 5.3與同一模型的多對多關係
例如:
蒂姆 - >湯姆(同事)
蒂姆 - >史蒂夫(家庭成員)
蒂姆 - >喬恩(鄰居)
在我的用戶模型我有這個地方我使用數據透視表中的user1_id和user2_id作爲外鍵:
public function relationships()
{
return $this->belongsToMany(User::class,null,'user1_id','user2_id')->withTimestamps()->withPivot('type');
}
在一個方向上工作正常。所以,如果我稱之爲:
User::find($timsID)->relationships;
能夠按照預期工作,我會得到湯姆史蒂夫·喬恩作爲結果。現在,如果我在該查詢中使用Tom的ID,Tim將不會返回關係,因爲當Tom's ID存儲在user2中時,它將在user1_id上搜索。
如果有任何外鍵匹配,是否有解決方案來提取記錄?我不想爲每個關係存儲2條記錄。
什麼是您的數據透視表?你似乎通過'null'。 – EddyTheDove
它是user_user。由於遵循laravel命名約定,所以我傳遞null,並且它在默認情況下傳遞null。 – tecshaun