Mar*_*tin 10 php laravel eloquent laravel-4
我有三个表:users,items和user_items.用户拥有许多项目,而项目属于许多用户.
表格:
Users
id
username
password
Items
id
name
equipable
User_items
id
user_id
item_id
equipped
Run Code Online (Sandbox Code Playgroud)
型号:
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');
}
}
Run Code Online (Sandbox Code Playgroud)
在pivot(user_items)表中,我有一个非常重要的列"配备".
我有一个用户可以装备,取消装备和扔物品的表格.此表单有一个隐藏字段,其中包含pivot(user_items)表行id.因此,当用户试图装备物品时,系统检查物品是否可以装备.
所以,我想要一个带有数据透视数据和项目数据的对象,基于数据透视表中的item_id,我可以发送给处理程序(处理所有逻辑).
所以我要做的是先访问数据透视表,然后访问项目表.
像这样的东西(不起作用):
$item = User::find(1)->items->pivot->find(1);
Run Code Online (Sandbox Code Playgroud)
这可能吗?
Ron*_*hof 22
您首先必须在您的枢轴呼叫中包含"equipable":
return $this->belongsToMany('User', 'user_items')
->withPivot('equipable');
Run Code Online (Sandbox Code Playgroud)
然后你可以问Eloquent你的物品是否可以装备:
$item = User::with('items')->get()->find(1)->items->find(2)->pivot->equipable;
Run Code Online (Sandbox Code Playgroud)
牢记两件事:
| 归档时间: |
|
| 查看次数: |
17369 次 |
| 最近记录: |