我有三张表:users(用户),items(物品)和user_items(用户-物品关联表)。一个用户可以拥有多个物品,一个物品也可以属于多个用户。
这些表如下:
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)中,有一个非常重要的名为“equipped”的列。我有一个表单,用户可以在其中装备、脱下和丢弃物品。这个表单有一个带有数据透视表(user_items)行 ID 的隐藏字段。因此,当用户尝试装备物品时,系统会检查该物品是否可装备。
因此,我想要一个包含数据透视表数据和物品数据的对象,基于数据透视表中的item_id,我可以将其发送到处理程序(处理所有逻辑)中。
所以,我需要先访问数据透视表,然后再访问物品表。
类似这样(不起作用):
$item = User::find(1)->items->pivot->find(1);
这可行吗?