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);
これは可能ですか?