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

LARAVEL - How to create an indirect relation between 3 models

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

让我们假设 tables:用户、宠物和诊所。关系是,一个用户可以养不止一只宠物,而一只宠物只能有一个诊所。

在 table "Pets" 我有一个 FK 到 user_id 和另一个到 clinic_id.

我想做这样的事情:

$user->clinics(); 

在用户模型上 return 与用户关联的所有不同诊所。现在我只能做:

$user->pets()->with('clinics); 

但我只想 return 不同的诊所。

用户模式:

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();