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