Задать вопрос
@T_verdisla_V
Начинающий

Как создать Entity в zf3 через командную строку?

Здравствуйте, я решил выучит ZF3. Смотрю видео-уроки , правда по ZF2, нашел книгу по третьему зенду. Дошел до создания сущностей с БД. В видео-уроках сущности создаются через .bat файл в командной строке. У меня они так не создаются, в комментариях к видео нашел код который из командной строки делает тоже самое
doctrine-module orm:convert-mapping --namespace="Shop\Entity\\" --force --from-database annotation ./module/Shop/src/
и
doctrine-module orm:generate-entities ./module/Shop/src/ --generate-annotations=true

Doctrine устанавливал от сюда создал bootstrap.php
<?php

// bootstrap.php
require_once "../../vendor/autoload.php";
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Shop\Entity;?
$paths = array(Entity);?
$isDevMode = false;
// the connection configuration
$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'root',
    'password' => '1',
    'dbname'   => 'shop',
);
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);

где знаки вопроса, в коде я не уверен (правильно ли я указал путь).
псевдоним Shop\Entity прописан у меня в module\Shop\config\module.config.php
<?php
namespace Shop;

use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;

return [
    'doctrine' => [
        'driver' => [
            'shop_entity' => [
                'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
                'cache' => 'array',
                'paths' => [
                    __DIR__. '/../src/Shop/Entity',
                ],
            ],
            'orm_default' => [
                'drivers' => [
                    'Shop\Entity' => 'shop_entity'
                ]
            ]
        ]
    ], 
    'router' => [
        'routes' => [
            'shop' => [
                'type' => Segment::class,
                'options' => [
                    'route'    => '/[:action/][:id/]',
                    'constraints' => [
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id'     => '[0-9]+',
                    ],
                    'defaults' => [
                        'controller' => Controller\IndexController::class,
                        'action'     => 'index',
                    ],
                ],
            ],
        ],
    ],
    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class,
        ],
    ],
    'view_manager' => [
        'template_path_stack' => [
            __DIR__ . '/../view',
        ],
    ],
];

файл bootstrap.php находится в \config\autoload\, а cli-config.php в \config\
<?php
use Doctrine\ORM\Tools\Console\ConsoleRunner;

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

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

return ConsoleRunner::createHelperSet($entityManager);

Так вот, когда в командной строке ввожу
doctrine orm:convert-mapping --namespace="Shop\Entity\\" --force --from-database annotation ./module/Shop/src/

она мне выдает что файл cli-config.php или config\cli-config.php отсутствует и предлагает воспользоваться образцом который у меня и так написан уже. Возможно я что то с адресами напутал, даже скорее всего раз не находит этот файл. И еще в примере установки в разделе Setting up the Commandline Tool есть такая строка
php vendor/bin/doctrine
для чего она не пойму, когда ее запускаю она мне просто содержимое файла выдает и все. И крайний вопрос: Как создать Entity в zf3 через командную строку?

Только что узнал что у меня ни где не прописана функция GetEntityManager() которая вызывается в cli-config.php
  • Вопрос задан
  • 483 просмотра
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@OrlandoST
Не надо создавать никаких bootstrap.php
В global.php или local.php в конфиге пропиши настройки соединения для Doctrine

Доступ к модулю осуществляется по пути: ./vendor/doctrine/doctrine-module/bin/doctrine-module
В твоем случае так:
./vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Shop\Entity\\" --force --from-database annotation ./module/Shop/src/
Ответ написан
Ваш ответ на вопрос

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

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