Предоставление опытным пользователям права на прямой запуск SQL-запросов

0

Я разрабатываю приложение, в котором вы управляете большим разнообразием данных, хранящихся во многих разных таблицах, используя Symfony и Doctrine. Я выполнил простую (сложную) форму поиска для 90% случаев, но проблема - последние 10%, которые могут быть очень сложными, сложными и искаженными запросами.

Моя мысль заключалась в том, чтобы предоставить продвинутым пользователям возможность написать некоторые запросы DQL (SQL dialiect, используемые в Doctrine) для запуска, только для SELECT, и сделать их доступными для остальных пользователей, что позволит избежать необходимости их кодировать и нажимать, но скорее сделайте их динамичными и расширяемыми. Запросы будут храниться в базе данных, и пользователю может быть предоставлена возможность изменить некоторые параметры запроса, чтобы он соответствовал его потребностям.

Я знаю, что для этого нужны некоторые расширенные проверки безопасности, но приемлемо ли это решение?

Большое спасибо!

Теги:

1 ответ

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

Это уже часть консоли symfony, которая позволяет запускать DQL-запросы.

  1. Получить менеджера объектов
  2. $ Запроса = $em-> CreateQuery ($ DQL)
  3. $ = ResultSet $query-> выполнить (параметры $);
  4. Render $ resultset

Для более полного решения проверьте: vendor/doctrine/orm/lib/Doctrine/ORM/Инструменты/Консоль/Команда /RunDqlCommand.php

/**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        /* @var $em \Doctrine\ORM\EntityManagerInterface */
        $em = $this->getHelper('em')->getEntityManager();

        [...]

        $query = $em->createQuery($dql);

        [...]

        $resultSet = $query->execute([...]);

        // Show the results
    }

Ещё вопросы

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