doctrine-orm - Cli-Config Helper - 多个实体管理器

标签 doctrine-orm

我正在使用 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 个目录,例如:

  • 配置A
  • 配置B

  • 并放置 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/

    相关文章:

    doctrine-orm - Doctrine 2 限制 IN 子查询

    doctrine-orm - 在Doctrine 2.2中体现MySQL多态关联

    doctrine-orm - Doctrine Query Builder, CASE WHEN in ORDER BY

    简单查询的 MySQL 性能问题

    php - 禁用 Doctrine 外键约束

    php - Symfony2+学说 : How to convert iso8859-1 to utf-8 and viceversa?

    symfony - 部署时清除 redis 中的学说缓存

    php - Doctrine2 在 select 时有超过 1000 行的问题

    php - 如何检查是否在 Doctrine2 存储库中找到了对象?

    mysql - "1064 You have an error in your SQL"尝试使用 Symfony2 和 Doctrine2 执行 INSERT