gpt4 book ai didi

php - 属于 Laravel 5 中的数据透视表

转载 作者:搜寻专家 更新时间:2023-10-31 21:49:25 30 4
gpt4 key购买 nike

假设我有以下数据库架构:

enter image description here

dogsowners 与经典的 belongsToMany 相关联。 walks 表怎么样?我希望能够在这种关系中使用 Eloquent 好东西:

$dogs = Dog::with('walks')->get();
$walks = Walk::with('dogs')->get();

理论上,我可以用两个单独的列替换 dog_owner_id:dog_idowner_id。这将使使用 Eloquent 变得容易,但我会失去一些数据完整性,因为不相关的 Dog 和 Owner 可能会去散步(这对两者都不安全!)。

Walk.php中,应该如何定义关系?

public function dog() {
// return ???;
}

Dog.phpOwner.php 怎么样?

public function walks() {
// return ???;
}

最佳答案

1- 创建 4 个模型(Walk、Dog、Owner、DogOwner)

2-在Walk.php模型中

    public function dog()
{

return $this->hasOneThrough(
'App\Models\Dog',
'App\Models\DogOwner',
'id', // Local key on dog_owner table...
'id', // Local key on dogs table...
'dog_owner_id', // Foreign key on walks table...
'dog_id' // Foreign key on dog_owner table...
);
}

public function owner()
{

return $this->hasOneThrough(
'App\Models\Owner',
'App\Models\DogOwner',
'id', // Local key on dog_owner table...
'id', // Local key on owners table...
'dog_owner_id', // Foreign key on walks table...
'owner_id' // Foreign key on dog_owner table...
);
}

3-在Dog.php模型中

   public function walks()
{
return $this->hasManyThrough(
'App\Models\Walk',
'App\Models\DogOwner',
'dog_id', // Foreign key on dog_owner table...
'dog_owner_id', // Foreign key on walks table...
'id', // Local key on dogs table...
'id' // Local key on dog_owner table...
);
}

4-在Owner.php模型中

   public function walks()
{
return $this->hasManyThrough(
'App\Models\Walk',
'App\Models\DogOwner',
'owner_id', // Foreign key on dog_owner table...
'dog_owner_id', // Foreign key on walks table...
'id', // Local key on owners table...
'id' // Local key on dog_owner table...
);
}

关于php - 属于 Laravel 5 中的数据透视表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46523445/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com