【发布时间】:2018-12-26 12:07:02
【问题描述】:
所以,我可以使用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)
【问题讨论】:
-
就在今天,我回答了一个问题,该问题的答案完全符合您的问题。欢迎随时check it out。
-
顺便说一句,最好使用
$query->whereNotNull('username')而不是$query->where('username', '!=', null),因为它将利用SQL 连接的本机语法(即,它更易于跨数据库系统移植)。 -
@Namoshek 啊哈!那很有意思! when 是否像
isset()一样工作,如果我的请求中没有$request->dummy而我在when()中使用它,比如when($request->dummy.. -
请看
when($value, $callback, $default)here的代码。它基本上只执行if($value),因此在request()->get('field')上使用它是可以的,但如果您有0的输入,则可能无法工作。
标签: laravel laravel-5 eloquent laravel-query-builder