Инструмент консоли Doctrine 2 говорит: вам не хватает "cli-config.php " или " config / cli-config.РНР"
Я запустил инструмент консоли доктрины:
$ php vendor/doctrine/orm/bin/doctrine orm:schema-tool:create --dump-sql
Я получил это вместо ожидаемой функциональности:
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);
вопросы:
- Я на ZF2, и нет файла под названием
bootstrap.php
- Я новичок в ZF2, поэтому я не знаю, что такое мой entityManager и что я должен поставить для
GetEntityManager
как мне это сделать?
2 ответов
Легкий Путь
Используйте Модуль Доктрины:
vendor/bin/doctrine-module orm:schema-tool:create --dump-sql
Трудный Путь
есть два файла, которые вам нужно написать самостоятельно:bootstrap.php
и cli-config.php
почему я должен писать два файла, да?
Doctrine Docs инструктирует вас сделать это.
где это сказано?
здесь:
- получение-an-entitymanager (использовать ее для собственной модели bootstrap)
- настройка командной строки (используйте его для моделирования собственного cli-config)
в cli-config найдите код
// replace with mechanism to retrieve EntityManager in your app
$entityManager = GetEntityManager();
здесь GetEntityManager()
не является частью какой-либо библиотеки или кода, это ваш собственный метод, который доктрина предлагает вам написать самостоятельно, где этот метод возвращает экземпляр Doctrine\ORM\EntityManager
. Я думаю, что доктрина может быть более ясной в этой части.
я все еще не могу сделать это, врачи слишком суровы, помогите!
если у вас слишком много слоев в вашей конфигурации, то есть попытка разработать доктрину с ZF2 симфонии, это может быть боль, выясняя, где заканчивается доктрина, где начинается фреймворк и т. д. Попробуйте настроить доктрину самостоятельно в отдельном контейнере тестирования, следуя документам доктрины, без использования каких-либо рамок, и все должно стать очень ясным.
вот что я сделал для моей конфигурации доктрины. Я выбрал создайте 3 файла для гибкости и поместите их все в my ./config
папка моей структуры папок Zend.
во-первых, у меня есть cli-config.php
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Console\ConsoleRunner;
require 'config/bootstrap.php';
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create($dbParams, $config);
return ConsoleRunner::createHelperSet($entityManager);
тогда, мой bootstrap.php
date_default_timezone_set("America/Detroit"); // Set the default timezone
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(- 1);
include 'vendor/autoload.php';
include 'doctrine-config.php';
и, наконец, моя doctrine-config.php
. Он отделен и простой способ вызвать только этот файл из других частей вашего кода. В моем случае это называется CLI
и изнутри синглтона ZF2, когда мне нужно соединение доктрины.
// Paths to Entities that we want Doctrine to see
$paths = array(
"module/Module/src/Entity",
"module/MyApplication/src/Entity"
);
// Tells Doctrine what mode we want
$isDevMode = true;
// Doctrine connection configuration
$dbParams = array(
'driver' => 'pdo_mysql',
'user' => 'user',
'password' => 'pass',
'dbname' => 'db_name'
);