Laravel не может использовать поле с именем 'status' - PullRequest
0 голосов
/ 09 марта 2020
$this->model
            ->join('user_credentials', 'upload_conversions.user_id', '=', 'user_credentials.user_id')
            ->select(
                'upload_conversions.id',
                'upload_conversions.status',
                'upload_time',
                'user_credentials.user_id',
                DB::raw('CONCAT(user_credentials.first_name, " ", user_credentials.last_name) as user_name')
            )
            ->where('upload_conversions.status', '!=', 'x')
            ->groupBy('upload_time')
            ->get();

В приведенном выше запросе я не могу использовать поле "status" в предложении where с красноречивым Laravel.

Обратите внимание на "! =", Оно не должно независимо от того, что содержит строка. Если я изменю где использовать любое другое поле, запрос будет работать так, как должен.

Кажется, я не могу найти никаких ответов, и я не могу поверить, что я первый, кто использовал имя поля "status" в предложении where.

Так что же я делаю не так?

ОБНОВЛЕНИЕ: Проблема в том, что я не получаю ошибки, но и никаких результатов. Где это должно иметь много результатов. Изменение поля в where дает результаты ..

ОБНОВЛЕНИЕ: Это из-за значений NULL. NULL в SQL также не должен быть строкой, так почему это не работает? Это Laravel ошибка?

ОТВЕТ:

->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

Действительно ужасно, но это работает.

Ответы [ 3 ]

1 голос
/ 09 марта 2020

Вы должны использовать '<>' вместо '!=' в предложении where.

0 голосов
/ 09 марта 2020

Вы должны использовать whereNull для получения результатов NULL.

->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

См. этот ответ для получения дополнительной ссылки для сравнения NULL.

0 голосов
/ 09 марта 2020
->where('upload_conversions.status', '!=', 'test')
->orWhereNull('upload_conversions.status')

Действительно ужасно, но это работает.

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