laravel - Laravel whereNull only if the value NULL is selected
问题描述
我需要通过密钥库进行过滤,该密钥库可以具有 1、2、3 之类的值……但如果未设置,也可以为 NULL。这些选项有一个select
标签,包括 NULL 作为第一个选项,例如,如果选择了 NULL 和 2 选项,我只需要过滤那些未设置 (NULL) 或设置为 2的银行。
public function scopeFilter($query, $params) {
$query->when(request('query.status', [10, 11]), function ($query, $params) {
return $query->whereIn('status', $params);
});
$query->when(request('query.bank'), function ($query, $params) {
return $query->whereIn('bank', $params)->orWhereNull('bank');
});
return $query;
}
这总是返回未设置银行select
的帖子(为 NULL)。只有当标签选择了 NULL 选项时,我才需要显示这些。谢谢!
解决方案
好的,我找到了解决方案。现在orWhereNull
不影响其他子句。请问能不能简化一点?
$query->when(request('query.bank'), function ($query, $params) {
return $query->where(function ($query) use ($params) {
$query->whereIn('bank', $params);
if (in_array(null, $params)) {
$query->orWhereNull('bank');
}
});
});
推荐阅读
- ios - firebase.messaging() 导致 PWA 锁定在 IOS
- php - 在 minio 中存储数据(类似 S3 的系统)
- c# - 使用静态类来管理网络请求是否合理?
- javascript - 在 typescript 中设置 API 响应的接口
- sql - 将 SQLCMD 参数设置为 LinkedServer
- kubernetes - kubernetes imagePullPolicy:总是不自动拉取镜像
- android-studio - 如何解决这个 android studio 项目错误?
- php - 试图获取非对象的属性“图像”
- java - java中基于泛型类型的决策
- php - WordPress 压缩在 localhost、XAMPP 上不起作用