LARAVEL-如何在3个模型之间创建间接关系

LARAVEL-如何在3个模型之间创建间接关系,laravel,eloquent,models,Laravel,Eloquent,Models,我有3个模型:用户、宠物和诊所 让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所 在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id 我想做一些类似的事情: $user->clinics(); 在用户模型上,返回与用户关联的所有不同诊所。现在我只能做: $user->pets()->with('clinics); 但我只想返回不同的诊所 用户模式: public function pets() { retur

我有3个模型:用户、宠物和诊所

让我们假设表格:用户、宠物和诊所。关系是,一个用户可以有多个宠物,而一个宠物只有一个诊所

在“Pets”表中,我有一个FK到用户id,另一个FK到诊所id

我想做一些类似的事情:

$user->clinics(); 
在用户模型上,返回与用户关联的所有不同诊所。现在我只能做:

$user->pets()->with('clinics); 
但我只想返回不同的诊所

用户模式:

public function pets()
{
    return $this->hasMany('Petable\Models\Pet', 'user_id', 'id');
}
宠物模式:

public function clinic()
{
    return $this->belongsTo('Petable\Models\Clinic', 'clinic_id', 'id');
}

有什么建议吗

以下内容应足够:

public function clinics()
{
    return $this->belongsToMany('Petable\Models\Clinic', 'user_pets')->distinct();
}
这样你就可以打电话了

$user->clinics();

仅返回不同的诊所是什么意思?你能详细说明一下吗?可能类似于
$user->pets()->with('clinics')->distinct()->get()
我想通过pets返回与用户相关的所有诊所。例如:如果我有两个宠物都在同一诊所,$user->clinics();应返回1个诊所。如果我有两个宠物在两个不同的诊所,它应该返回两个诊所。非常感谢,这是你最后的解决方案:)小问题是,它返回同一诊所两次。。有没有办法防止重复?