2015-05-26 13 views
9

Próbuję użyć Doctrine ORM z Silex i znaleźć go w ogóle frustrujące doświadczenie, ze względu na brak spójnej dokumentacji.Wiersz poleceń Doctrine ORM z Silex: Brakuje pliku "cli-config.php" lub "config/cli-config.php" w projekcie

Kiedy biegnę vendor/bin/doctrine w konsoli, pojawia się następujący komunikat:

wyjściowa:

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); 

To jest mój plik composer.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" 
    } 
} 

Jest kod php, który rejestruje usługę Doctrine itp.

<?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', 
                 )), 
       )); 

To jest mój plik konfiguracyjny (bin/CLI-config.php)

<?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); 

Co robię źle?

+1

ruch 'bin/CLI-config.php' w' config/CLI-config.php' – Federkun

+0

@Leggendario: Byłoby miło, gdyby to zostało docuented gdzieś (lub nie tęsknię)? Jak się okazuje, wydaje się, że jest to odpowiedź, więc prześlij ją jako odpowiedź, więc mogę ją zaakceptować. –

Odpowiedz

8

Musisz przenieść bin/cli-config.php w config/cli-config.php.

Niestety nie znalazłem dokumentacji na ten temat. Otworzyłem doctrine/dbal/bin/doctrine-dbal.php i sprawdziłem, jak zadziałało.

+1

co zrobić, jeśli nie mam pliku 'cli-config.php' w folderze bin? – fonjeekay

0

Zarówno CLI config.php i bootstrap.php powinien być umieszczony w tym samym katalogu. Działają dla mnie, jeśli albo umieszczę je w katalogu głównym projektu zend lub w folderze root-> config.

Następnie komenda: convert-mapping w terminalu na komputerze Mac działa poprawnie.

./vendor/bin/doctrine orm:convert-mapping --namespace="Quiz\Model\Entity" --force --from-database annotation ./module/Quiz/src/Model/ 
Powiązane problemy