在tinyint字段中用值0进行雄辩的查询过滤的问题

时间:2019-04-30 11:34:57

标签: php laravel-5 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');
}`

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

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

我希望您在查询结束时使用->get()来获取数据