不使用查询启动Query Builder

sen*_*nty 2 laravel eloquent laravel-5 laravel-query-builder

所以,我可以使用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()
Run Code Online (Sandbox Code Playgroud)

是启动查询(在第一行)的唯一方法:

$user = User::where('username', '!=', null)
Run Code Online (Sandbox Code Playgroud)

Tim*_*wis 5

您正在寻找

$userQuery = User::query();
Run Code Online (Sandbox Code Playgroud)

然后,加上一些附加条款:

$userQuery->where(...);
Run Code Online (Sandbox Code Playgroud)

然后,提供一个closure(->first(),->get()等)来吸引用户:

$users = $userQuery->get();
Run Code Online (Sandbox Code Playgroud)

  • 别担心.` - > when()`方法在这里有意义; 可能必须自己开始使用该方法.干杯! (2认同)