Doctrine orm 条令2控制台工具说:您缺少一个;cli config.php";或;config/cli config.php“;

Doctrine orm 条令2控制台工具说:您缺少一个;cli config.php";或;config/cli config.php“;,doctrine-orm,console,doctrine,configuration-files,Doctrine Orm,Console,Doctrine,Configuration Files,我运行了一个控制台工具: $ php vendor/doctrine/orm/bin/doctrine orm:schema-tool:create --dump-sql 我得到了这个而不是预期的功能: You are missing a "cli-config.php" or "config/cli-config.php" file in your project, which is required to get the Doctrine Console working. You can

我运行了一个控制台工具:

$ php vendor/doctrine/orm/bin/doctrine orm:schema-tool:create --dump-sql
我得到了这个而不是预期的功能:

You are missing a "cli-config.php" or "config/cli-config.php" file in your
project, which is required to get the Doctrine Console working. You can use the
following sample as a template:

<?php
use Doctrine\ORM\Tools\Console\ConsoleRunner;

// replace with file to your own project bootstrap
require_once 'bootstrap.php';

// replace with mechanism to retrieve EntityManager in your app
$entityManager = GetEntityManager();

return ConsoleRunner::createHelperSet($entityManager);
您的数据库中缺少“cli config.php”或“config/cli config.php”文件
项目,这是使条令控制台工作所必需的。你可以使用
以下示例作为模板:
捷径
使用条令模块:

vendor/bin/doctor模块orm:schema工具:创建--转储sql

注:此答案可能特定于以下框架:

  • Zend框架
  • 泽德富于表现力
  • 薄层
  • 中音
艰难的道路 将其放入
config/cli config.php

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use DoctrineConnector\EntityManagerFactory;
include 'vendor/autoload.php'

global $container;
$container = require 'config/container.php';

$factory = new EntityManagerFactory();
$entityManager = $factory($container);
return ConsoleRunner::createHelperSet($entityManager);
return [
   'doctrine' => [
        /*
         * Paths for Doctrine to find Entities
         */
        'paths' => array(
            "src/Blah/src/Entity",
        ),

        /*
         * Doctrine configuration parameters
         */
        'db_params' => array(
            'driver' => 'pdo_mysql',
            'user' => 'user',
            'password' => 'password',
            'dbname' => 'dbname',
            'driverOptions' => array(
                1002 => 'SET NAMES UTF8MB4'
            )
        ),

        /*
         * Tells Doctrine what mode we want
         * For Production environment set to \Doctrine\Common\Proxy\AbstractProxyFactory::AUTOGENERATE_NEVER;
         */
        'is_dev_mode' => false
    ]
];
将其放入
config/autoload/database.local.php

use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use DoctrineConnector\EntityManagerFactory;
include 'vendor/autoload.php'

global $container;
$container = require 'config/container.php';

$factory = new EntityManagerFactory();
$entityManager = $factory($container);
return ConsoleRunner::createHelperSet($entityManager);
return [
   'doctrine' => [
        /*
         * Paths for Doctrine to find Entities
         */
        'paths' => array(
            "src/Blah/src/Entity",
        ),

        /*
         * Doctrine configuration parameters
         */
        'db_params' => array(
            'driver' => 'pdo_mysql',
            'user' => 'user',
            'password' => 'password',
            'dbname' => 'dbname',
            'driverOptions' => array(
                1002 => 'SET NAMES UTF8MB4'
            )
        ),

        /*
         * Tells Doctrine what mode we want
         * For Production environment set to \Doctrine\Common\Proxy\AbstractProxyFactory::AUTOGENERATE_NEVER;
         */
        'is_dev_mode' => false
    ]
];
创建此类:
EntityManagerFactory

class EntityManagerFactory
{

    /**
     * Set Up & return Doctrine connection
     *
     * @param ContainerInterface $container
     * @throws \RuntimeException
     * @return EntityManager
     */
    public function __invoke(ContainerInterface $container): EntityManager
    {
        $config = $container->get('config');
        Assert::that($config)->keyExists('doctrine', "No Doctrine ORM Configuration Specified, check your 'config/autoload/database.local.php'");
        $paths = $config['doctrine']['paths'];
        $dbParams = $config['doctrine']['db_params'];
        $isDevMode = $config['doctrine']['is_dev_mode'];

        $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
        $config->setProxyDir("temp/proxies");
        $entityManager = EntityManager::create($dbParams, $config);

        /*
         * Enable native prepared statements
         */
        $pdo = $entityManager->getConnection()->getWrappedConnection();
        $pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);

        /*
         * Allow Doctrine to persist boolean types
         */
        Type::overrideType('boolean', BooleanToIntType::class);
        return $entityManager;
    }
}
在那之后,对于那些不使用Zend框架的人来说,事情应该会非常顺利 我想使用Doctrine控制台工具来验证我正在开发的Symfony捆绑包中的映射,而不必创建整个Symfony应用程序来测试我的工作。我能够通过遵循官方安装指南使其正常工作


注意:尽管我只是想验证映射,但仍然需要连接到真正的数据库才能运行。就我个人而言,使用pdo_pgsql,除了指南中的内容之外,我还需要使用
主机
端口
DBParams。

这里的一些解释将非常有用!我的问题中的条令控制台工具期望一个具有完全定义的实体管理器的环境能够工作<代码>条令模块
工具必须使用其他工具,或者是一个完全不同的工具,因为它不需要实体经理来工作。我没有弄清楚如何定义实体管理器,或者如何定义ZF2环境以便能够使用条令控制台的模式工具,而是选择使用
条令模块
工具,该工具不需要我进行任何额外设置。给我一个错误“没有这样的文件或目录”(我使用的是Symfony 2.7 btw…)同样对于SF 3.4,“没有这样的文件或目录”,请详细说明此二进制文件的来源,因为有些人使用独立的Symfony软件包,而不是通过Symfony CLI生成项目。是否在安装某个composer软件包时创建了“条令模块”,或者您是否有对其项目存储库的引用?如果没有这些文件,您应该怎么做?条令文档没有给我任何关于如何获取它们或者我应该在哪里寻找它们的解释……你可以自己创建它们。i、 你是如何建立学说的?我使用了Composer
php Composer.phar require“条令/orm”
。如果您没有composer,请先安装它。(在没有它的情况下,试图与教义搏斗是毫无意义的)。然后,创建自己的
bootstrap.php
文件,将其复制到与我的第一个链接中相同的位置,然后编辑它以添加特定的数据库参数。然后,创建自己的
cli config.php
,就像在第二个链接中一样。是的,似乎我没有这些文件。。。不知道为什么,可能是因为我在一个家庭环境的定制版本中工作。我用composer安装了所有东西,但从未编辑过php composer.phar,只是简单的composer需要***。不管怎样,我会尝试手动操作,谢谢..是的,你必须自己写。它们是与特定设置相关的配置文件。我想它们没有包括在内,因为不同的环境可能有不同的配置,它们指示您编写自己的配置。