我正在使用 Doctrine 2.5
使用 Slim 3。我有两个实体管理器 Master 和 Slave。
在 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),
'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
未创建实体管理器。我可以尝试的任何想法/建议?
最佳答案
学说的 cli 脚本 预计 “他们”在返回的 HelperSet 中定义。这将用于创建架构。
你可以看到here
要解决此问题,一种方法是创建 2 个目录,例如:
并放置 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
关于doctrine-orm - Cli-Config Helper - 多个实体管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455664/