Проблема с фильтрацией Eloquent запросов по значению 0 в поле tinyint - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть пользовательский фильтр, который фильтрует по имени, электронной почте и типу пользователя (администратор или обычный пользователь)

Я использую 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 голосов
/ 30 апреля 2019

Вы можете сделать intval для получения целочисленного значения следующим образом:

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

Я надеюсь, что вы извлекаете данные, используя ->get() в конце запроса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...