10

users、items、user_items の 3 つのテーブルがあります。ユーザーは多くのアイテムを持ち、アイテムは多くのユーザーに属しています。

テーブル:

Users
id
username
password

Items
id
name
equipable

User_items
id
user_id
item_id
equipped

モデル:

class User extends Eloquent {
     public function items()
     {
         return $this->belongsToMany('Item', 'user_items')
                   ->withPivot('equipped');
     } 
}

class Item extends Eloquent {
    public function users()
    {
         return $this->belongsToMany('User', 'user_items');
    }
}

ピボット (user_items) テーブルには、「装備」という非常に重要な列があります。

ユーザーがアイテムを装備、装備解除、および投げることができるフォームがあります。このフォームには、ピボット (user_items) テーブルの行 ID を持つ隠しフィールドがあります。そのため、ユーザーがアイテムを装備しようとすると、システムはアイテムが装備可能かどうかを確認します。

したがって、ピボット テーブルの item_id に基づいて、ピボット データとアイテム データを含むオブジェクトが必要であり、ハンドラー (すべてのロジックが処理される場所) に送信できます。

そのため、最初にピボット テーブルにアクセスし、次に item テーブルにアクセスする必要があります。

このようなもの(機能しません):

$item = User::find(1)->items->pivot->find(1);

これは可能ですか?

4

1 に答える 1