在不使用查询的情况下启动查询生成器
Starting Query Builder without using a query
所以,我可以使用 User::where('username', '!=', null)->get()
;
但是,我想使用 if 条件从第一个条件开始链接查询,在这种情况下 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)
您可以像这样实例化您的对象:
$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();
您正在寻找
$userQuery = User::query();
然后,添加一些附加条款:
$userQuery->where(...);
然后,提供 closure
(->first()
、->get()
等)来吸引您的用户:
$users = $userQuery->get();
所以,我可以使用 User::where('username', '!=', null)->get()
;
但是,我想使用 if 条件从第一个条件开始链接查询,在这种情况下 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)
您可以像这样实例化您的对象:
$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();
您正在寻找
$userQuery = User::query();
然后,添加一些附加条款:
$userQuery->where(...);
然后,提供 closure
(->first()
、->get()
等)来吸引您的用户:
$users = $userQuery->get();