Laravel雄辩的查询问题

时间:2016-02-05 13:47:38

标签: php laravel

我试图让所有用户的图像关系一对多。其中in images表的列类型等于1。

我创建的最近。

  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;
    }

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

1 个答案:

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