首页 > 解决方案 > Laravel 查询未获取所有值(无法获取空值)

问题描述

我有一个名为tb_user多个字段的表,其中 1 个是id_company.
显示用户列表时,管理员可以设置是否要查看所有用户或已选中的特定用户id_company

在查询中,我动态设置它,这样当管理员将其设置为全部或不设置时,查询仍然可以工作。这是我的查询:

if ($id_company == 'all') {
    $idSign = '!=';
} else {
    $idSign = '=';
}
->where('tb_user.id_company', $idSign, $id_company);

现在的问题是当管理员选择所有用户时,查询没有返回所有结果。当 id_company 为 null 时,此查询不返回该值。我应该怎么做才能使这个查询在全部设置时可以返回 id_company 既为空又不为空的值?

标签: laravelnullwhere-clause

解决方案


如果用户选择全部,那么您根本不需要放在哪里。

为此,请在多个步骤中打破您的查询:

$query = YourModel::query();

if ($id_company !== 'all') {
    $query->where('tb_user.id_company', $id_company);
}

$result = $query->get(); // or paginate if you want.

推荐阅读