因此,我可以使用User::where('username', '!=', null)->get()
;
但是,我想使用从第一个条件开始的条件来链接查询,在这种情况下不需要where('username', '!=', null)
。让我举一个伪示例:
我正在根据有多个字段的“用户”运行报告。我想像这样初始化查询构建器,并使用if语句链接查询。
$user = User::class(); // I know I can't use this line, however you'll get the idea.
if (isset($gender)) {
$user = $user->where('gender', $gender);
}
if (isset($age)) {
$user = $user->where('age', $age);
}
$users = $user->get()
是在第一行中开始查询的唯一方法:
$user = User::where('username', '!=', null)
答案 0 :(得分:5)
您正在寻找
$userQuery = User::query();
然后添加一些附加条款:
$userQuery->where(...);
然后,提供closure
(->first()
,->get()
等)来吸引用户:
$users = $userQuery->get();
答案 1 :(得分:4)
您可以像实例化对象:
$user = (new User);
注意:但是,最好使用when()
代替if语句。
$users = User::when($gender, function ($query, $gender) {
$query->where('gender', $gender);
})
->when($age, function ($query, $age) {
$query->where('age', $age);
})
->get();
如果未初始化变量,则可以使用isset()
方法,如:
$users = User::when( isset($gender), function ($query, $gender) {
$query->where('gender', $gender);
})
->when( isset($age), function ($query, $age) {
$query->where('age', $age);
})
->get();