Php 从数据透视表中选择LAVEL

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、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', '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();

在视图中,在列出一行时,您可以突出显示该行,只需使用一个条件,因为每个项目->用户是否为空。

您可以向我们展示您的模型,以便我们了解您的关系是如何建立的吗?