簡體   English   中英

屬於Laravel 5中的數據透視表

[英]Belongs to pivot table in Laravel 5

假設我有以下數據庫模式:

在此輸入圖像描述

dogsowners與經典的belongsToMany walks桌怎么樣? 我希望能夠在這種關系中使用雄辯的好東西:

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

理論上,我可以用兩個單獨的列替換dog_owner_iddog_idowner_id 這樣可以很容易地使用Eloquent,但是我會丟失一些數據完整性,因為無關的狗和所有者可能會去散步(這對兩者都不安全!)。

Walk.php中 ,如何定義關系?

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

Dog.phpOwner.php怎么

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

正如其他人所提到的,你可以使用HasManyThrough:

https://laravel.com/docs/5.5/eloquent-relationships#has-many-through

就像你說的那樣,這對你的狗和主人模特有效。 對於Walk模型,它有點不同,但您可以自己映射查詢:

return $this->hasManyThrough(
    'App\Post',
    'App\User',
    'country_id', // Foreign key on users table...
    'user_id', // Foreign key on posts table...
    'id', // Local key on countries table...
    'id' // Local key on users table...
);

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...
    );
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM