Найти строку кода, по которой доктрина создала конкретный запрос

0

В MySQL Slow query log я нашел запрос, который должен быть оптимизирован. Все запросы генерируются Doctrine. Но в проекте много файлов, и я не знаю, где я могу найти строку кода доктрины, которая генерирует этот запрос.

Есть ли какое-либо решение для поиска запросов, созданных доктриной?

Теги:
doctrine2

2 ответа

1
Лучший ответ

Это не идеальное решение, но некоторые общие рекомендации. Если у вас есть доступ к сайту в режиме отладки, откройте профилировщик Symfony и посмотрите вкладку "Производительность". Вы увидите график водопада того времени, когда приложение потратит на обработку задач. Запросы доктрины показаны оранжевым цветом, и если вы знаете, где примерно в общем количестве запросов, которые вы ищете, вы можете получить некоторую информацию.

Например, если конкретный запрос является пятым запросом для запуска (вы можете найти это на вкладке doctrine), вы можете использовать профилировщик, чтобы увидеть, когда запрос выполняется примерно. В этом примере первый запрос - это запрос пользователя, проверяющий статус входа в систему (обратите внимание, что он выполняется до того, как мой контроллер даже работает).

Изображение 174551

Если я вызываю запросы базы данных в своих файлах twig, запрос доктрины будет отображаться в строке времени о зеленых строках внизу. Тогда я бы знал, чтобы посмотреть в twig файлы для запроса.

Всего несколько советов, которые помогут вам найти запросы.

-3

Я бы не советовал вам редактировать то, что вы хотите отредактировать.

Каждый раз, когда вы создаете сущность, Symfony также создает репозиторий. (src/AppBundle/Repository). В пределах хранилища вы создадите свои пользовательские функции и запрос.

Что касается примеров DQL, здесь есть куча SO...;)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню