2016-01-08 2 views
0

У меня проблема с узким местом в красноречивом Laravel. При запуске логики для построения запроса это очень быстро и просто при использовании красноречивого, однако, когда наконец приходит к использованию $query->get() (из-за количества строк и количества реляционных строк), он останавливается и попадает max execution time , Я, очевидно, не хочу просто увеличивать время ... И я бы предпочел не переписывать все мои функции, чтобы использовать необработанные запросы (хотя я буду, если придется).Laravel QueryBuilder для DB :: select

Мой вопрос: есть ли способ передать команду QueryBuilder sql на DB::select или DB::raw.

Я знаю, что вы можете использовать $query->toSql() - но мне не хватает данных, связанных с данными, если бы я мог их получить, я мог бы решить это за считанные секунды.

ответ

1

Вы можете получить привязки из построителя запросов, вызвав $ query-> getBindings().

+0

О, пожалуйста, скажите мне, что это было не так, что * просто ... – LokiSinclair

+0

Как вы строите запрос? Используете ли вы модельный класс или используете фасад DB напрямую? –

+0

Вы правы. Genius! Спасибо :) Из-за сложности я использовал красноречивый из-за всех «лишних» отношений, которые мне нужны, и он ударил по множеству таблиц. Просто имеет смысл. Но с фактическими данными мы говорим о миллионах строк, я заметил узкое место, когда он создавал модели на> 25 тыс. Строк. Значит, я знал, что мне не нужны модели и только сырой запрос, но явно не хотел переписывать все. Ты звезда! – LokiSinclair

Смежные вопросы