带有 Slim Framework 的 Doctrine 2.3.6:在哪里创建 doctrine_cli.php

Doctrine 2.3.6 with Slim Framework : where to create doctrine_cli.php

我目前正在尝试使用我的 Slim 应用程序设置 Doctrine。

我阅读了本指南:http://busypeoples.github.io/post/slim-doctrine/。 一切都很好,直到我点击 Adding the Doctrine Commandline Tool 部分。

它解释说我需要一个 doctrine_cli.php 文件来设置命令行工具,里面有这段代码:

<?php

require 'vendor/autoload.php';

$em = //Some code to create EntityManager

$helpers = new Symfony\Component\Console\Helper\HelperSet(array(
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em)
));

我应该在哪里创建 doctrine_cli.php ?

谢谢。

几分钟前我找到了答案。它可能会在将来帮助某人。

看来你可以把配置文件放在任何地方,只要你在相同的目录中执行命令行即可。


解释:

您可以这样调用命令行工具(参见Doctrine Documentation 以供参考):

$ vendor/bin/doctrine orm:schema-tool:create

这会在 vendor/bin/ 中调用 bash 脚本,在 vendor/doctrine/orm/bin/ 中调用 doctrine.php。 在这个文件中你可以看到这一行:

$configFile = getcwd() . DIRECTORY_SEPARATOR . 'cli-config.php';

这意味着:

  • Doctrine 实现使用的配置文件名为 cli-config.php,而不是 doctrine_cli.php
  • Doctrine搜索文件getcwd(),就是你执行命令行时进入的目录。

简而言之:

  1. any/path/you/want中创建一个cli-config.php文件(参考Doctrine Documentation )。

    <?php
    require 'path/to/vendor/autoload.php';
    $em = //Some code to create EntityManager
    $helpers = new Symfony\Component\Console\Helper\HelperSet(array(
        'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
        'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em)
    ));
    
  2. 在同一目录执行你的命令行工具

    $ cd any/path/you/want
    any/path/you/want$ vendor/bin/doctrine orm:schema-tool:create
    

编辑: 对于Doctrine 2.4,也可以放在名为config的目录下,在config父目录

下执行命令行工具