Команды CLI Doctrine 2 из PHP - PullRequest
0 голосов
/ 13 мая 2011

Привет всем. Я пишу программу, которая преобразует некоторые данные в нашей базе данных, а затем вызывает Doctrine для создания файлов YAML из указанной структуры базы данных Mysql. У меня Doctrine работает изнутри PHP. Однако я не могу понять, как вызывать команды CLI из PHP. Ниже приведена команда CLI Doctrine 2, которая делает то, что мне нужно.

php ./doctrine orm: convert-mapping --filter = "users" --from-database yml ./test

Эта команда работает из командной строки Linux, но как мне сделать то же самое с помощью объектов Doctrine? Я не хочу просто использовать оператор PHP exec для отправки команды в оболочку. Я хочу использовать объектную модель Doctrine.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

Don:

По-видимому, это не очень распространенный метод программирования. Однако я использовал Doctrine из PHP, вызывая его с помощью команды PHP EXEC. Я знаю, ты сказал, что не хотел бы делать это таким образом. Тем не менее, это на самом деле работает довольно хорошо. Ниже приведен пример такого решения. $cmd_string = "php ./doctrine orm:generate-entities --generate-annotations=1 --regenerate-entities=1 $this->entity_file_dir"; $result = array(); exec($cmd_string, &$result);

Надеюсь, это поможет, -Don!

0 голосов
/ 01 марта 2015

Я наткнулся на этот вопрос при попытке выполнить команду непосредственно из сценария PHP без использования CLI.

В частности, мне нужно было вызвать orm: sure-production-settings .Каждая команда Doctrine имеет свой собственный класс: http://www.doctrine -project.org / api / orm / 2.4 / namespace-Doctrine.ORM.Tools.Console.Command.html

Я решил этоследующим образом:

$entityManager = ...; // Get the entity manager somehow in your application

// Creates the helper set
$helperSet = \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($entityManager);

// Initializes the desired command and sets the helper set
// In your case it should be ConvertMappingCommand instead
$command = new \Doctrine\ORM\Tools\Console\Command\EnsureProductionSettingsCommand();
$command->setHelperSet($helperSet);

// Initializes the input
// Alternatives: http://api.symfony.com/2.0/Symfony/Component/Console/Input.html
$input = new \Symfony\Component\Console\Input\ArgvInput(); // Input coming from the CLI arguments

// Initializes the output
// Alternatives: http://api.symfony.com/2.0/Symfony/Component/Console/Output.html
$output = new \Symfony\Component\Console\Output\ConsoleOutput(); // Prints the output in the console

// Runs the command
$command->run($input, $output);

Я новичок в Доктрине, поэтому я не совсем уверен, как это работает, но это работает.Любой комментарий приветствуется.

...