2013-11-22 3 views
6

Я выбежала доктриной консольный инструмент:Doctrine 2 Console Tool говорит: У вас не хватает "CLI-config.php" или "конфигурации/CLI-config.php"

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

Вопросы:

  • Я на ZF2, и нет ни одного файла называется bootstrap.php
  • Я новичок в ZF2, так что я не знаю, что мой EntityManager является и то, что я должен поставить для GetEntityManager

Как сделать эту работу?

ответ

10

ростейшая

Использование Doctrine Модуль:

vendor/bin/doctrine-module orm:schema-tool:create --dump-sql

+0

Некоторые объяснения были бы замечательными здесь! –

+1

Инструмент Doctrine Console в моем вопросе ожидает, что среда с полностью определенным менеджером сущностей сможет работать. Инструмент 'doctrine-module' должен использовать что-то еще или совсем другой инструмент, поскольку он не требует, чтобы менеджер объектов работал. Вместо того, чтобы выяснить, как определить диспетчер сущностей или как определить среду ZF2 для использования схемы схемы доктрины, я решил использовать инструмент «doctrine-module», который не требовал от меня каких-либо дополнительных настроек , – Dennis

+0

Дает мне ошибку «Нет такого файла или каталога» (я использую Symfony 2.7 btw ...) – nclsvh

2

The Hard Way

Есть два файла, вы должны написать сами: bootstrap.php и cli-config.php

Зачем мне писать два файла, да?

Doctrine Docs предписывают вам это сделать.

Где это так?

Здесь:

  • obtaining-an-entitymanager (использовать его для моделирования свой собственный загрузчик)
  • setting-up-the-commandline-tool (использовать его для моделирования собственных CLI-конфигурации)

кли-конфигурации, смотрите для кода

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

Здесь GetEntityManager() не является частью какой-либо библиотеки или кода, это ваш собственный метод, который Doctrine предлагает вам написать самостоятельно, где этот метод возвращает экземпляр Doctrine\ORM\EntityManager. Я думаю, что сообщение «Доктрина» может быть более ясным в этой части.

Я все еще не могу этого сделать, документы слишком суровы, помогите!

Если у вас слишком много уровней в вашей конфигурации, то есть, пытаясь выработать Учение с ZF2 в Symphony, это может быть боль, выясняя, где заканчивается доктрина, где начинается каркас, и т. Д. Попробуйте настроить Doctrine самостоятельно отдельный тестовый контейнер, следуя документам Doctrine, без использования каких-либо фреймворков, и все должно стать очень ясным.

Вот что я сделал для моей конфигурации Doctrine.Я решил создать 3 файла для гибкости и поместить их в свою папку ./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' 
); 
+0

Что вы должны делать, когда у вас нет этих файлов? Doctrine-docs не дают мне никаких объяснений о том, как получить те или где я должен их искать .... – nclsvh

+0

Вы можете создать их самостоятельно. То есть, как вы создали Доктрину? Я использовал Composer 'php composer.phar, требующий« doctrine/orm »'. Если у вас нет композитора, установите его первым. (Нет смысла пытаться бороться с Доктриной без нее). Затем создайте свой собственный файл 'bootstrap.php', скопируйте его так же, как и в моей первой ссылке, а затем отредактируйте его, чтобы добавить свои конкретные параметры базы данных. Затем создайте свой собственный 'cli-config.php', как во второй ссылке. – Dennis

+0

Да, похоже, у меня нет этих файлов ... Нет идеи, почему, может быть, потому, что я работаю в пользовательской версии среды усадьбы. Я установил все с композитором, но никогда не использую php composer.phar, просто простой композитор требует ***. Во всяком случае, я постараюсь сделать это вручную, спасибо .. – nclsvh

Смежные вопросы