Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何使用()在中写入子查询?_Laravel_Eloquent - Fatal编程技术网

Laravel 如何使用()在中写入子查询?

Laravel 如何使用()在中写入子查询?,laravel,eloquent,Laravel,Eloquent,我必须获取特定数据,如“角色”表已归档状态,我需要状态=1,所有数据都从角色表中获取 $result = User::select() ->with('roles') ->where('email', $email) ->get(); return $result; 以下是对这一问题的答复: 如果我正确理解了数据模型的结构: 用户有许多角色 角色具有属性状态 要按状态=1筛选吗 编辑:我对上面的答案不满意,因为据我所知,在这种情况下,返回的

我必须获取特定数据,如“角色”表已归档状态,我需要状态=1,所有数据都从角色表中获取

$result = User::select()
    ->with('roles')
    ->where('email', $email)
    ->get();
    return $result;

以下是对这一问题的答复: 如果我正确理解了数据模型的结构:

  • 用户有许多角色
  • 角色具有属性状态
  • 要按状态=1筛选吗
编辑:我对上面的答案不满意,因为据我所知,在这种情况下,返回的用户没有已加载的角色列表,因此我检查了文档()并给出了我的发现,以下代码应该满足您的要求:

$users = User::with(['roles' => function ($query) {
    $query->where('status', '1');
}])
->where('email', $email)
->get();

我从未使用过Elount或laravel,而且我不是php开发人员,因此我无法尝试此代码段,如果它不正确,请告诉我。

您可以像这样编写子查询

$result = User::select()
    ->with(['roles' => function($q){    
         $q->where('status', 1);
    }])
    ->where('email', $email)
    ->get();
    return $result;

作为Laravel开发商;你说得对。此代码将获取具有角色的用户(急切加载),但仅获取角色查询返回true的用户。出于好奇,是否需要select()?我应该更正我的答案吗?
$result = User::select()
    ->with(['roles' => function($q){    
         $q->where('status', 1);
    }])
    ->where('email', $email)
    ->get();
    return $result;