Php 从数据透视表中选择LAVEL
我有三个表:users、items和user\u items。一个用户有许多项,而一个项属于许多用户Php 从数据透视表中选择LAVEL,php,laravel,eloquent,pivot-table,Php,Laravel,Eloquent,Pivot Table,我有三个表:users、items和user\u 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'
**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');
}
这样您就可以访问第三个表的值
一些有用的链接-
你可以这样做
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();
在视图中,在列出一行时,您可以突出显示该行,只需使用一个条件,因为每个项目->用户是否为空。您可以向我们展示您的模型,以便我们了解您的关系是如何建立的吗?