从数据透视表中选择Laravel

时间:2014-10-22 10:44:46

标签: php laravel eloquent pivot-table

我有三个表:users,items和user_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的行。

enter image description here

选择突出显示的输出:

enter image description here

采用laravel风格的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以像这样使用

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/

http://laravel.com/docs/4.2/eloquent

答案 1 :(得分: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();

在列出行时,您可以突出显示该行只使用条件作为每个项目>用户是否为空白。

相关问题