首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Silex的命令行Doctrine :项目中缺少一个"cli-config.php“或"config/cli-config.php”文件

问使用Silex的命令行Doctrine :项目中缺少一个"cli-config.php“或"config/cli-config.php”文件
EN

Stack Overflow用户
提问于 2015-05-26 13:16:09
回答 2查看 4.8K关注 0票数 9

由于缺乏一致的文档,我试图在Silex中使用Doctrine,并发现它是一种完全令人沮丧的体验。

当我在控制台上运行vendor/bin/doctrine时,我得到以下输出:

输出:

代码语言:javascript
复制
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);

这是我的composer.json文件:

代码语言:javascript
复制
{
    "require": { 
        "silex/silex": "2.0.*@dev",
        "symfony/yaml": "2.6.7",
        "doctrine/dbal": "~2.2",
        "dflydev/doctrine-orm-service-provider": "2.0.*@dev",
        "khepin/yaml-fixtures-bundle": "~0.8.1"
    },
    "config": {
            "bin-dir": "bin"
    }
}

这是注册Doctrine服务等的php代码。

代码语言:javascript
复制
<?php

use Doctrine\Common\Cache\ApcCache;
use Doctrine\Common\Cache\ArrayCache;
use Silex\Provider\DoctrineServiceProvider;
use Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider;

$app->register(new DoctrineServiceProvider(), array(
                'db.options' => array(// http://silex.sensiolabs.org/doc/providers/doctrine.html
                    'driver' => 'pdo_mysql', 
                    'dbname' => 'foobar',
                    'host' => 'localhost',
                    'user' => 'root',
                    'password' => 'root',
                    'charset' => 'utf8'
                )
            ));

$app->register(new DoctrineORMServiceProvider(), 
                array(
                        'db.orm.proxies_dir'  => __DIR__.'/../cache/doctrine/proxy',
                        'db.orm.proxies_namespace'  => 'DoctrineProxy',
                        'db.orm.cache'  =>  !$app['debug'] &&extension_loaded('apc') ? new ApcCache() : new ArrayCache(),
                        'db.orm.auto_generate_proxies' => true,
                        'db.orm.entities' => array(array(
                                                        'type' => 'simple_yaml', 
                                                        'path' => __DIR__.'/src/Resources/config/doctrine',
                                                        'namespace' => 'Foobar\Entity',
                                                        )),
                ));

这是我的配置文件(bin/cli-config.php)

代码语言:javascript
复制
<?php

// retrieve EntityManager
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Console\ConsoleRunner;

$app = require_once __DIR__.'/../app/src/app.php';

$isDevMode = $app['debug'];

$paths = $app['db.orm.entities']['path'];
$config = Setup::createYAMLMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($app['db.options'], $config);

return ConsoleRunner::createHelperSet($entityManager);

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-26 13:28:31

您需要在bin/cli-config.php中移动config/cli-config.php。

不幸的是,我没有找到关于它的文件。我打开了doctrine/dbal/bin/doctrine-dbal.php并检查了它是如何工作的。

票数 8
EN

Stack Overflow用户

发布于 2017-01-04 22:11:45

cli-config.php和bootstrap.php都应该放在相同的文件夹中。如果我将它们放置在zend项目的根目录或root->config文件夹中,它们将为我工作。

然后orm:在mac上的终端上成功运行转换映射命令。

代码语言:javascript
复制
./vendor/bin/doctrine orm:convert-mapping --namespace="Quiz\Model\Entity" --force  --from-database annotation ./module/Quiz/src/Model/
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30459720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档