我正在开发一个CRM,我有一个用户模型,可以与其他用户 Build 多对多的关系,以及通过数据透视表定义的一种关系 .
例如:
蒂姆 - >汤姆(同事)
蒂姆 - >史蒂夫(家庭成员)
蒂姆 - >乔恩(邻居)
在我的用户模型中,我有这个,我使用数据透视表中的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的ID存储在user2中时,它正在搜索user1_id .
如果有任何外键匹配,是否有解决方案来提取记录?我不想为每个关系存储2条记录 .
1 回答
我会假设我理解你想做什么 . Laravel的关系在两个方向都有效 . 在您的情况下,您只定义了一个方向,但希望在两个方向上使用它 . 清楚我的意思
这样你就有了两种关系 . 你可以在这个想法的基础上 Build 你想要的东西 .