Eloquent属于与其他条件的关系

时间:2014-03-03 17:54:01

标签: laravel laravel-4 eloquent

我需要获取用户所属的所有模型以及所有模型where private = 0(来自所有其他用户)

我已经尝试了两个合并的单独查询 - 但是使用这种方法有重复的项目。

此方法也不起作用:

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members')
->orWhere("private", "=", 0);

2 个答案:

答案 0 :(得分:2)

假设'private'字段在collect_members表上,然后使用'private'设置一个pivot字段,然后通过pivot搜索

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members')
        ->orWherePivot('private','0');

或者你可以

$this->belongsToMany('ManiacTwister\Models\Collection', 'collection_members')
       ->orWhere("collection_members.private", "=", 0);

两者都应该工作第一个是表格不可知(即它链接到模型)但第二个会更快

答案 1 :(得分:0)

取消模型上的orWhere()并急切加载它。

$member = Member::where('id', '1')->has(array('collections' => function($q)
{
    $q->where('private', '0');
}))->get()->first();

foreach($member->collections as $collection) {
     echo $collection->name;
}