首页 > 解决方案 > 在 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');
}`

有人可以帮忙吗?

标签: phplaravel-5eloquent

解决方案


您可以执行 intval 以确保获得整数值,如下所示,

$query->where('admin','=', intval(request('usertype')));

我希望您->get()在查询结束时使用


推荐阅读