首页 > 解决方案 > 不使用查询启动查询生成器

问题描述

所以,我可以使用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)

标签: laravellaravel-5eloquentlaravel-query-builder

解决方案


您正在寻找

$userQuery = User::query();

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

$userQuery->where(...);

然后,提供一个closure( ->first(), ->get(), 等) 来获取您的用户:

$users = $userQuery->get();

推荐阅读