Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 18.09.2016 00:57:02

Проблема запроса в eloquent

У меня многоуровневый запрос - то есть сначала left join всех нужных полей, потом происходит выборка в зависимости от того, есть ли фильтр.
Фильтрация происходит по 5 полям. Одной группой where, OrWhere решается один уровень фильтрации, а есть ещё второй уровень, который рубит всё что находится в первом селекте с фильтрацией.

Вообщем суть такова, что при

запрос

$query ->where('p.id', '=', $filters->type_id)

происходит фильтрация и всё норм, но потом идёт второй уровень
$query       ->where('c.name', 'like', $search_string)
                ->orWhere('contacts.phone', 'like', $search_string)
                ->orWhere('contacts.email', 'like', $search_string)
                ->orWhere('contacts.name', 'like', $search_string)

который в итоге игнорирует полностью первую выбору и даёт результаты по ней.
Вопрос, что я делаю не так и есть ли какой-то более правильный способ для этого действия.

Не в сети

#2 18.09.2016 01:16:57

Re: Проблема запроса в eloquent

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

Не в сети

#3 18.09.2016 19:04:28

Re: Проблема запроса в eloquent

а как определяется глубина запроса? пробовал менять их местами им было всё-равно )

Изменено WarShumer (18.09.2016 19:05:17)

Не в сети

#4 18.09.2016 22:32:54

Re: Проблема запроса в eloquent

элоквент всё сам определяет, затем определяет пдо итд.

Не в сети

#5 19.09.2016 15:12:14

Re: Проблема запроса в eloquent

Не совсем понял что такое вывернуть на изнанку и что такое пдо ) решением вопроса стало создание одного сложного запроса со связками (join) с функциями, а также условий (where) с функциями и параметрами отбора и тогда только стало ясно что всё работает как написано.

Не в сети

Подвал раздела