выполнить php app / console доктрина: схема: обновление с контроллера Symfony 2 - PullRequest
11 голосов
/ 06 марта 2012

Я хочу выполнить эту команду

php app/console doctrine:schema:update

из контролов без использования exec функция php,

Любой комментарий будет использован для меня.

Спасибо !!!

Ответы [ 2 ]

15 голосов
/ 07 марта 2012

Если вы ищете здесь , внизу приведен пример того, как выполнить команду из кода Symfony.

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

Как сказано, следующий код следует использовать с осторожностью. Я бы не использовал его по причинам, изложенным в документации Symfony, но он работает.

При использовании следующего кода в вашем контроллере вы можете выполнить команду:

$kernel = $this->get('kernel');
$application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
$application->setAutoExit(false);

$options = array('command' => 'list');
$application->run(new \Symfony\Component\Console\Input\ArrayInput($options));

Если вам нужен вывод, вы должны либо использовать существующий класс, реализующий OutputInterface, либо создать свой собственный в зависимости от ваших потребностей.

11 голосов
/ 07 марта 2012

Спасибо всем,

Я использовал этот код

            $kernel = $this->get('kernel');
            $application = new \Symfony\Bundle\FrameworkBundle\Console\Application($kernel);
            $application->setAutoExit(false);
            //Create de Schema 
            $options = array('command' => 'doctrine:schema:update',"--force" => true);
            $application->run(new \Symfony\Component\Console\Input\ArrayInput($options));
            //Loading Fixtures
            $options = array('command' => 'doctrine:fixtures:load',"--append" => true);
            $application->run(new \Symfony\Component\Console\Input\ArrayInput($options));

и в этой ссылке есть некоторая информация, которая может быть полезна для других

Спасибо !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...