php - 在 tinyint 字段中按值 0 过滤 Eloquent 查询的问题
问题描述
我有一个按名称、电子邮件和用户类型(管理员或普通用户)过滤的用户过滤器
我正在使用 eloquent 查询生成器,数据库中的字段是 tinyint,普通用户的值为 0,管理员的值为 1。
当尝试按普通用户(0)过滤时,我得到了包括管理员在内的所有用户。当我按管理员过滤时,我得到了管理员。
所以以某种方式按 0 过滤会返回所有用户类型。
这是我正在使用的查询:
`
* Scope a query to requested filters.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeFilter($query)
{
if(request('usertype')){
$query->where('admin', request('usertype'));
}
return $query->orderBy('name', 'ASC');
}`
有人可以帮忙吗?
解决方案
您可以执行 intval 以确保获得整数值,如下所示,
$query->where('admin','=', intval(request('usertype')));
我希望您->get()
在查询结束时使用
推荐阅读
- sql - 两列上的复合非空约束
- node.js - VSCode 不会关闭子进程 (processChild.js)
- java - Spark - 从列中读取 JSON 数组
- c# - 如何绑定分层列表
到 WPF 树视图 - javascript - 如何从对象数组中创建一串键值对对象?
- python - 为什么 subprocess.run 返回退出代码 2 但日志中没有错误?
- csv - Flink ParserError UNQUOTED_CHARS_AFTER_QUOTED_STRING
- python - PyTorch DataLoader 如何与 PyTorch 数据集交互以转换批次?
- javascript - 如何关闭 echarts 的自动放大功能?
- python - requests.exceptions.HTTPError:429 客户端错误:对 url 的请求过多