Laravel查询未获取所有值(无法获取空值)



我有一个名为tb_user的表,其中有多个字段,其中1个是id_company
当显示用户列表时,管理员可以设置他们是希望查看所有用户还是具有选定id_company的特定用户。

在查询中,我动态设置它,这样当管理员将它设置为all或not时,查询仍然可以工作。这是我的问题:

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

现在的问题是,当管理员选择所有用户时,查询不会返回所有结果。当id_company为null时,此查询不会返回值。我应该怎么做才能使这个查询在设置为all时返回id_company同时为null和非null的值?

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

要做到这一点,可以通过多个步骤打破您的查询:

$query = YourModel::query();
if ($id_company !== 'all') {
$query->where('tb_user.id_company', $id_company);
}
$result = $query->get(); // or paginate if you want.

首先,您的命名非常非常规。如果id_company是公司表的外键,则应将其命名为company_id。ID大多是整数,因此all的值不是很简单。与其将过滤器值设置为all,我建议根本不要设置它。这样你就有了

$users = TBUser::query();
if (!empty($id_company)) {
$users->where('id_company', $id_company);
}
return $users->get();

相关内容

  • 没有找到相关文章

最新更新