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

鑑於在列出行的時候,您可以突出顯示行,只需使用條件,因爲每個項目 - >用戶都是空白的。