我正在开发一个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