2016-02-05 212 views
1

我试图获得与图像的关系一个所有用户很多。凡在图像表列类型是等于1Laravel雄辩的查询问题

最近我创建。

User::with('Images')->has('Images')->get(); 

但它返回的所有图像不仅与类型1;

我也试过

$a = User::defaultImage()->get(); 

和用户模型DEF范围

public function scopeDefaultImage($query) { 

      $query->whereHas('Images', function ($query) { 
        $query->where('default', 1); 
       })->get(); 






     return $query; 
    } 

,但它不与图像返回关系,只有用户

+0

怎么样定义你们的关系? –

+0

OM我的用户模型我有公共函数图像(){ 回报 $这个 - >的hasMany( '应用程序\图片'); } –

回答

2

你想修改的方式你正在使用你的with功能。这将让这个返回的仅适用于图像将是1型

User::with(['Images' => function($q) { 
    $q->where('type', 1); 
}])->whereHas('Images', function($q) { 
    $q->where('type', 1); 
})->get(); 

的通过也加入whereHas,这将只返回有1连接的图像类型的用户。

我也将确保在你的数据库,你确实有用户和它们所连接到的图像以1图像类型,这样你肯定知道你应该得到的一些数据传回。

添加额外的约束,你只是链子另一whereHas

User::with(['Images' => function($q) { 
    $q->where('type', 1); 
}])->whereHas('Images', function($q) { 
    $q->where('type', 1); 
})->whereHas('Roles', function($q) { 
    $q->where('id', 5); 
})->get(); 
+0

TNX先生的工作很好,我将投票并设置为正确的,但请可以增加一个条款,我也有委托API访问表的角色,所以我有透视表。我只想要一个角色= 5的子句。我是laravel的新手帮助 –