Doctrine 2命令行配置为外部lib

时间:2017-02-07 16:28:48

标签: php doctrine-orm doctrine symfony

我尝试将Doctrine 2配置为项目的外部lib。 因此,我通过Composer安装它,并按照Doctrine文档中的说明进行操作。命令行确实无效。

以下是我的Bootstrap中Doctrine的部分:

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

/* Instantiation of doctrine
 ---------------------------------------------------------------------------------------------------------------------*/

$paths = array(__DIR__."/Application/Entity");
$isDevMode = true;

// the connection configuration
$dbParams = Yaml::parse(file_get_contents('Application/Config/Private/bdd.yml'));

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$em = EntityManager::create($dbParams, $config);

/*--------------------------------------------------------------------------------------------------------------------*/

以下是我的cli-config.php文件的内容(在项目根目录中):

use Doctrine\ORM\Tools\Console\ConsoleRunner;

require_once 'index.php'; // my bootstrap



return ConsoleRunner::createHelperSet($em);

所以,现在,文档说我可以在控制台模式下使用Doctrine键入:php vendor/bin/doctrine 但是,当我使用此命令时,它不会执行。我只有教条文件的内容:

dir=$(d=${0%[/\\]*}; cd "$d"; cd "../doctrine/orm/bin" && pwd)

# See if we are running in Cygwin by checking for cygpath program
if command -v 'cygpath' >/dev/null 2>&1; then
        # Cygwin paths start with /cygdrive/ which will break windows PHP,
        # so we need to translate the dir path to windows format. However
        # we could be using cygwin PHP which does not require this, so we
        # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
        if [[ $(which php) == /cygdrive/* ]]; then
                dir=$(cygpath -m "$dir");
        fi
fi

dir=$(echo $dir | sed 's/ /\ /g')
"${dir}/doctrine" "$@"

php工作正常,我尝试安装symfony项目(测试命令行)和命令行使用Symfony。所以,我认为问题来自于Doctrine的安装/配置。

我不知道我错过了什么,但我不能通过命令行使用Doctrine。有人有想法吗?

1 个答案:

答案 0 :(得分:0)

您正在调用的学说命令不是PHP文件,而是shell脚本。

改为调用./vendor/bin/doctrine,它应该按预期工作。