Как работать с Doctrine ORM в командной строке, или как должен выглядеть cli-config.php?

Windows 8.1, ZendFramework 2

Привет

Запускаю ком. строку винды, перехожу в каталог проекта zf2. Из корня каталога запускаю команду:

php ./vendor/doctrine/orm/bin/doctrine orm:* — вместо звездочки команда, понятная Doctrine (validate/create и т.д.).

Результат выполнения команды выше:

F:\Server\domains\zf2-skeleton>php ./vendor/doctrine/orm/bin/doctrine orm:valida
te-schema
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);


Читаем, чо нам пишут и создаем файл config/cli-config.php с соответствующим содержимым:
<?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);


1. Нам сказано поменять файл bootstrap.php на свой. Правильно ли я понимаю, что в zf2 автозагрузчик (бутстрап) это файл init_autoloader.php в корне проекта? Я поставил его пока что, но в любом случае есть еще одна проблема.

2. Второй момент: необходимо получить EntityManager моего Zf2. Вопрос как его получить? Гуглил, но вариантов очень много и, так как я новичок (нуб, дно... — подставить свое) в zf2, я не знаю какой правильный и как это сделать правильно.
Например, я нашел это:
$this->getServiceLocator()->get('doctrine.entitymanager.orm_default');

Но с этим можно работать только в методе какого-то класса или функции и при этом передать в нее что-то из чего мы вытащим em. ServiceLocator $sl какой-нибудь наверное. Опять же для этого нужна какая-то функция init или хз. В общем вопрос — как это сделать.

P.S.: вообще, везде сказано, что чтобы работать с DoctrineORM таким способом надо юзать немного другую команду:
php vendor\bin\doctrine-module orm:validate-schema
— но в моем случае эта команда выдает примерно это:
<?
require_once __DIR__ . '/src/MyZfcAdmin/Module.php';
PHP Fatal error:  Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (MyZfcAdmin) could not be initialized.' in F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php:189
Stack trace:
#0 F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(163): Zend\ModuleManager\ModuleManager->loadModuleByName(Object(Zend\ModuleManager\ModuleEvent))
#1 F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php(90): Zend\ModuleManager\ModuleManager->loadModule('MyZfcAdmin')
#2 [internal function]: Zend\ModuleManager\ModuleManager->onLoadModules(Object(Zend\ModuleManager\ModuleEvent))
#3 F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\EventManager\EventManager.php(468): call_user_func(Array, Object(Zend\ModuleManager\ModuleEvent))
#4 F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\Ev in F:\Server\domains\zf2-skeleton\vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 189

При этом сайт открывается без проблем, модуль myZfcAdmin делает свое дело и работает так, как нужно.

Я это к чему говорю. Я получается костыль сейчас вставляю... Может стоит разобраться с работой команды php vendor\bin\doctrine-module orm:validate-schema, а не делать костыль?

На so.com не очень с этим помогли, может быть, тут что-то найду полезное по этому поводу.

Заранее спасибо.
  • Вопрос задан
  • 4125 просмотров
Пригласить эксперта
Ответы на вопрос 1
hell0w0rd
@hell0w0rd
Просто разработчик
Есть модуль под zf, официальный.
https://github.com/doctrine/DoctrineORMModule
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы