SQL-запрос в Laravel Eloquent Query - PullRequest
0 голосов
/ 02 июня 2018

Как создать запрос, как показано ниже в laravel eloquent

SELECT *
FROM TABLE
WHERE column1=value1 
and (
        (column2=value2 or column3=value3) 
     or (column4=value4 or column5=value5)
)

Пожалуйста, помогите.

Ответы [ 3 ]

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

Попробуйте

DB::table('the_table')
    ->where('column1', 'value1')
    ->where(function ($query) {
        $query->where(function ($query) {
            $query->where('column2', 'value2')
                ->orWhere('column3', 'value3');
        })->orWhere(function ($query) {
            $query->where('column4', 'value4')
            ->orWhere('column5', 'value5');
        });
    })->get();
0 голосов
/ 04 июня 2018

Ваш запрос может быть выражен как

SELECT * 
FROM table 
WHERE column1=value1 
AND (
       column2=value2 
    or column3=value3 
    or column4=value4 
    or column5=value5
)

Для использования выше в laravel вы можете следовать Группировка параметров руководство из документов

DB::table('table')
    ->where('column1', $value1)
    ->where(function ($query) use ($value2, $value3, $value4, $value5) {
        $query->where('column2', $value2)
          ->orWhere('column3', $value3)
          ->orWhere('column4', $value4)
          ->orWhere('column5', $value5)
          ;
    })
    ->get();
0 голосов
/ 02 июня 2018

Вам нужно использовать два вложенных оператора where():

DB::table('the_table')
    ->where('column', 'val')
    ->where(function ($q) {
        $q->where('column1', 'val1')
            ->orWhere('column2', 'val2');
    })
    ->where(function ($q) {
        $q->where('column3', 'val3')
            ->orWhere('column4', 'val4');
    })
    ->get()

Если вам нужно передать переменную во вложенный where(), вам нужно добавить use для встроенной функции:

DB::table('the_table')
    ->where('column', $val)
    ->where(function ($q) use ($val1, $val2) {
        $q->where('column1', $val1)
            ->orWhere('column2', $val2);
    })
    ->where(function ($q) {
        $q->where('column3', 'val3')
            ->orWhere('column4', 'val4');
    })
    ->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...