Laravel从数据透视表中选择
问题描述:
我有三个表:用户,项目和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行。
选择高亮显示输出:
什么是做它(在laravel风格)的正确方法?
答
您可以使用它像这样
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/
答
你可以像这样...
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();
鉴于在列出行的时候,您可以突出显示行,只需使用条件,因为每个项目 - >用户都是空白的。
你能告诉我们你的模型吗,所以我们知道你们的关系是如何制造的?添加了 – Jerodev 2014-10-22 10:57:58
型号代码 – user947668 2014-10-22 11:04:45