我有一个名为tb_user
的表,其中包含多个字段,其中一个是id_company
。
显示用户列表时,管理员可以设置是否要查看所有用户或选择了id_company
的特定用户。
在查询中,我动态地设置了它,以便当管理员将其设置为全部或全部时,查询仍然可以工作。这是我的查询:
if ($id_company == 'all') {
$idSign = '!=';
} else {
$idSign = '=';
}
->where('tb_user.id_company', $idSign, $id_company);
现在的问题是,当管理员选择所有用户时,查询未返回所有结果。 当id_company为null时,此查询不返回值。 我应该怎么做才能使查询全部设置后返回id_company既为null也不为null的值?
答案 0 :(得分:2)
如果用户全选了,那么您根本就不需要放位置。
为此,请分多个步骤中断查询:
filter_var($string, FILTER_UNSAFE_RAW, FILTER_FLAG_STRIP_LOW|FILTER_FLAG_STRIP_HIGH);
答案 1 :(得分:1)
首先,您的命名非常不常规。如果id_company
是公司表的外键,则应将其命名为company_id
。
ID主要是整数,因此all
的值不是很简单。我建议不要完全将其设置为不将过滤器值设置为all
。
这样,您就可以拥有
$users = TBUser::query();
if (!empty($id_company)) {
$users->where('id_company', $id_company);
}
return $users->get();