eloquent - проверка одного атрибута на две возможности - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь получить сеанс бронирования пользователей. Я хочу, чтобы это было подтверждено или не подтверждено.

$sessions = DB::table('online_counselling')->where('user_id', Auth::id())
                                                     ->where('is_confirmed', '0')
                                                     ->orWhere('is_confirmed', '1')
                                                     ->first();

Работает нормально, пока не доберусь до метода orWhere. Он полностью меняет идентификатор пользователя, чтобы получить первого пользователя, чей сеанс подтвержден. Это полностью игнорирует аутентифицированного пользователя.

Любая идея

1 Ответ

0 голосов
/ 29 июня 2018

Where всегда создает новый AND WHERE в запросе. При использовании orWhere создается абсолютно новая деталь WHERE.

У вас есть варианты; объединить is_confirmed часть:

$sessions = DB::table('online_counselling')->where('user_id', Auth::id())
                                                 ->whereIn('is_confirmed', ['0', '1'])
                                                 ->first();

Или объедините Auth::id() с другими where:

$sessions = DB::table('online_counselling')->where([
                                               ['user_id', Auth::id()],
                                               ['is_confirmed', '0']
                                           ])->orWhere([
                                               ['user_id', Auth::id()],
                                               ['is_confirmed', '1']
                                           ])->first();

Нужно учитывать одну вещь: если не имеет значения, является ли is_confirmed 1017 * или 1, зачем вообще его запрашивать? Разве вы не можете просто получить online_counselling с where('user_id', Auth::id())?

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