2014-10-22 143 views
0

我有三个表:用户,项目和user_items。用户拥有多个项目,并且项目属于多个用户。Laravel从数据透视表中选择

**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行。

enter image description here

选择高亮显示输出:

enter image description here

什么是做它(在laravel风格)的正确方法?

+0

你能告诉我们你的模型吗,所以我们知道你们的关系是如何制造的?添加了 – Jerodev 2014-10-22 10:57:58

+0

型号代码 – user947668 2014-10-22 11:04:45

回答

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(); 

鉴于在列出行的时候,您可以突出显示行,只需使用条件,因为每个项目 - >用户都是空白的。