Доктрина командной строки ORM с Silex: вам не хватает "cli-config.php " или " config / cli-config.php " файл в вашем проекте
Я пытаюсь использовать Doctrine ORM с Silex и нахожу это совершенно разочаровывающим опытом из-за отсутствия последовательной документации.
когда я запускаю vendor/bin/doctrine
в консоли, я получаю следующий вывод:
выход:
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 DoctrineORMToolsConsoleConsoleRunner;
// 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);
Это мой композитор.файл json:
{
"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"
}
}
это php-код, который регистрирует службу доктрины и т. д.
<?php
use DoctrineCommonCacheApcCache;
use DoctrineCommonCacheArrayCache;
use SilexProviderDoctrineServiceProvider;
use DflydevProviderDoctrineOrmDoctrineOrmServiceProvider;
$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' => 'FoobarEntity',
)),
));
Это мой файл конфигурации (bin / cli-config.в PHP)
<?php
// retrieve EntityManager
use DoctrineORMToolsSetup;
use DoctrineORMEntityManager;
use DoctrineORMToolsConsoleConsoleRunner;
$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);
что я делаю не так?
2 ответов
вам нужно двигаться bin/cli-config.php
на config/cli-config.php
.
к сожалению, я не нашел документации об этом. Я открыл doctrine/dbal/bin/doctrine-dbal.php
и проверил, как она работает.
и Кинк-конфигурации.в PHP и bootstrap.в PHP должен быть помещен в папку. Они работают для меня, если я помещаю их в корневой каталог моего проекта zend или в корневую папку->config.
затем orm: команда convert-mapping в терминале на mac успешно выполняется.
./vendor/bin/doctrine orm:convert-mapping --namespace="Quiz\Model\Entity" --force --from-database annotation ./module/Quiz/src/Model/