php ./doctrine orm:convert-mapping --filter =“users” - from-database yml ./test
此命令适用于Linux命令行,但如何通过Doctrine对象执行相同的操作?我不想只使用PHP exec语句向shell发送命令。我希望使用Doctrine对象模型。
答案 0 :(得分:1)
唐:!
显然这不是一种非常常见的编程方法。但是,我通过PHP EXEC命令调用它来使用PHP中的Doctrine。我知道你说你不想这样做。但是,它确实很有效。以下是此类解决方案的示例。
$cmd_string = "php ./doctrine orm:generate-entities --generate-annotations=1 --regenerate-entities=1 $this->entity_file_dir";
$result = array();
exec($cmd_string, &$result);
希望这有帮助, -Don!
答案 1 :(得分:0)
在尝试直接从PHP脚本执行命令时,我偶然发现了这个问题,而没有使用CLI。
特别是,我需要拨打 orm:ensure-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);
我是Doctrine的新手,所以我不确定这是如何工作的,但确实如此。任何评论都表示赞赏。