Красноречивый запрос где и условие ИЛИ где и другое условие - PullRequest
0 голосов
/ 07 мая 2019

Мне нужно создать запрос, который ищет (имя = foo И фамилия = bar) ИЛИ (имя = bar и фамилия = foo). Это было действительно неприятно, чтобы работать должным образом. Я ценю любые предложения.

$this->_records->where('first_name','LIKE', $params[0])->where('last_name', 'LIKE', $params[1])->orWhere('first_name','LIKE', $params[1])->where('last_name', 'LIKE', $params[0]);

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Вы можете сгруппировать их так:

$this
    ->_records()
    ->where(function ($query) use ($params) {
        return $query->where('first_name', 'LIKE', $params[0])
            ->where('last_name', 'LIKE', $params[1]);
    })
    ->orWhere(function ($query) use ($params) {
        return $query->where('first_name', 'LIKE', $params[1])
            ->where('last_name', 'LIKE', $params[0]);
    })
    ->get();
0 голосов
/ 07 мая 2019

Вы можете попробовать этот запрос, который позволяет искать по нескольким полям.

$this->_records
     ->whereRaw("concat(first_name, ' ', last_name) like '%".$params."%' ")
     ->orWhereRaw("concat(last_name, ' ', first_name) like '%".$params."%' ")
     ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...