Laravel где предложение не возвращает данные после нескольких предложений orWhere? - PullRequest
1 голос
/ 22 января 2020

Я использую laravel 6.10 версию, в которой я выполняю поиск,

У меня есть 3 таблицы

1) course_category

2) course_sub_category

3) курс [course_id_category (внешний ключ), course_sub_category_id (внешний ключ)]

ниже мой код

$course = $request->searchItem;

    if ($course=="") {
        $Courses = DB::table('course')
            ->join('course_category', 'course.course_category_id', '=', 'course_category.id')
            ->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
            ->orderBy('course.title','asc')
            ->paginate(15);
    }
    else{
        $Courses = DB::table('course')
            ->join('course_category', 'course.course_category_id', '=', 'course_category.id')
            ->join('course_sub_category', 'course.course_sub_category_id', '=', 'course_sub_category.id')
            ->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
            ->where('course.title', 'LIKE', '%'.$course.'%')
            ->orWhere('course_category.title', 'LIKE', '%'.$course.'%')
            ->orWhere('course_sub_category.title', 'LIKE', '%'.$course.'%')
            ->get();
    }

enter image description here

когда я возвращаю значения, я собираю 0 массивов, но когда я удаляю одно или другое место из существующего, мой запрос работает, и его возвращаемое значение означает, что все значения с соответствием

означают, когда я использую несколько orWhere в laravel мое где не работает, пожалуйста, поделитесь решением на том же.

1 Ответ

1 голос
/ 22 января 2020

->orWhere не работает как обычно SQL. Вы должны использовать это так:

$Courses = DB::table('course')
            ->join('course_category', 'course.course_category_id', '=', 'course_category.id')
            ->join('course_sub_category', 'course.course_sub_category_id', '=', 'course_sub_category.id')
            ->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
             ->where(function($query) use ($course){
    $query->where('course.title', 'LIKE', '%'.$course.'%')
    $query->orWhere('course_category.title', 'LIKE', '%'.$course.'%')
    $query->orWhere('course_sub_category.title', 'LIKE', '%'.$course.'%')
})
->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...