首页 > 解决方案 > 雄辩的 - 检查一个属性的两种可能性

问题描述

我正在尝试让用户预订会话。我想要它,如果它被确认,或者没有被确认。

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

在我使用 orWhere 方法之前它工作正常。它完全更改用户 ID 以获取会话被确认的第一个用户。它完全无视经过身份验证的用户。

任何想法

标签: laraveleloquent

解决方案


WhereAND 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要考虑的一件事:如果is 0or无关紧要1,为什么要查询它?你不能只用 检索online_counsellingwhere('user_id', Auth::id())


推荐阅读