Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
У меня многоуровневый запрос - то есть сначала 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)
который в итоге игнорирует полностью первую выбору и даёт результаты по ней.
Вопрос, что я делаю не так и есть ли какой-то более правильный способ для этого действия.
Не в сети
первым выполнится самый глубокий запрос, чтобы обеспечивать уровень выше данными, поэтому выверни уровни наизнанку.
Не в сети
а как определяется глубина запроса? пробовал менять их местами им было всё-равно )
Изменено WarShumer (18.09.2016 19:05:17)
Не в сети
элоквент всё сам определяет, затем определяет пдо итд.
Не в сети
Не совсем понял что такое вывернуть на изнанку и что такое пдо ) решением вопроса стало создание одного сложного запроса со связками (join) с функциями, а также условий (where) с функциями и параметрами отбора и тогда только стало ясно что всё работает как написано.
Не в сети
Страницы 1