我正在使用Doctrine 2.5和Slim 3.我有两个实体经理Master和Slave.
在Cli-Config.php文件中,当我创建帮助程序并传递实体Managers及其连接时,如下所示,
$helpers = new Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($defaultEntityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($defaultEntityManager),
'db_customer' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($customerEntityManager->getConnection()),
'em_customer' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($customerEntityManager),
]);
return $helpers;
当我尝试命令时,现在在控制台中
php vendor/doctrine/orm/bin/doctrine orm:schema-tool:create
与$defaultEntityManager EntityManager相关的模式只是创建了与$customerEntityManager实体管理器相关的模式.
我可以尝试任何想法/建议吗?
最佳答案 doctrine的cli脚本希望在返回的HelperSet中定义’em’.这将用于创建架构.
你可以看到它here
要解决这个问题,一种方法是创建两个目录,如:
> configA
> configB
并在每个脚本中放置2个不同的cli-config.php脚本:
$helpers = new Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($defaultEntityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($defaultEntityManager),
]);
和
$helpers = new Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($customerEntityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($customerEntityManager),
]);
最后,运行:
php ../vendor/doctrine/orm/bin/doctrine orm:schema-tool:create
从每个目录
创建自己的脚本
或者,您可以基于doctrine `s cli script创建自己的脚本,例如将其命名为“doctrine.php”:
#!/usr/bin/env php
<?php
use Symfony\Component\Console\Helper\HelperSet;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
require_once __DIR__ . '/vendor/autoload.php';
$commands = [];
$helper1 = new Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($defaultEntityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($defaultEntityManager),
]);
$helper2 = new Symfony\Component\Console\Helper\HelperSet([
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($customerEntityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($customerEntityManager),
]);
ConsoleRunner :: run($helper1,$commands);
ConsoleRunner :: run($helper2,$commands);
将它放在项目的根目录下并运行它:
php doctrine.php orm:schema-tool:create