我有三个表:users,items和user_items。用户拥有许多项目,而项目属于许多用户。
**Users**
id
username
password
**Items**
id
name
**User_items**
id
user_id
item_id
型号:
class User extends Eloquent {
public function items()
{
return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id');
}
}
class Item extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id');
}
}
我需要选择所有项目表,打印它并突出显示属于特定用户id = 1的行。
选择突出显示的输出:
采用laravel风格的正确方法是什么?
答案 0 :(得分:1)
您可以像这样使用
public function user_items()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
}
像这样你可以访问第三张表的值。
一些有用的链接 - http://www.developed.be/2013/08/30/laravel-4-pivot-table-example-attach-and-detach/ http://vegibit.com/many-to-many-relationships-in-laravel/
答案 1 :(得分:0)
你可以这样做......
class User extends Eloquent {
public function items()
{
return $this->belongsToMany('Item', 'user_items', 'item_id', 'user_id')->withPivot('id');
}
}
class Item extends Eloquent {
public function users()
{
return $this->belongsToMany('User', 'user_items', 'user_id', 'item_id')->withPivot('id');
}
}
来自控制器..
$user_id = 2;
Item::with(['users'=>function($q) use ($user_id){$q->where('user_id',$user_id);}])->get();
在列出行时,您可以突出显示该行只使用条件作为每个项目>用户是否为空白。