2013-11-22 27 views
6

wpadłem doktryny narzędzie konsoli:Doctrine 2 Konsola Narzędzie mówi: Jesteś brakuje "CLI-config.php" lub "config/CLI-config.php"

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

mam to zamiast oczekiwanej funkcjonalności :

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

Issues:

  • jestem na ZF2, i nie ma pliku o nazwie bootstrap.php
  • Jestem nowy ZF2, więc nie wiem, co mój EntityManager jest i co należy umieścić na GetEntityManager

jaki sposób dokonać tej pracy?

Odpowiedz

10

Easy Way

Użycie Doctrine Moduł:

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

+0

Niektóre wyjaśnienia byłyby świetne tutaj! –

+1

Narzędzie Doctrine Console w moim pytaniu oczekuje, że środowisko z w pełni zdefiniowanym managerem podmiotu będzie w stanie działać. Narzędzie 'doctrine-module' musi używać czegoś innego lub jest zupełnie innym narzędziem, ponieważ nie wymaga pracy menedżera encji. Zamiast zastanawiać się, jak zdefiniować menedżera encji, lub jak zdefiniować środowisko ZF2, aby móc używać schematu konsoli doktryny, zdecydowałem się użyć narzędzia 'doctrine-module', które nie wymagało ode mnie żadnej dodatkowej konfiguracji . – Dennis

+0

Daje mi błąd "Brak takiego pliku lub katalogu" (Używam Symfony 2.7 btw ...) – nclsvh

2

The Hard Way

Istnieją dwa pliki, które trzeba napisać samemu: bootstrap.php i cli-config.php

Dlaczego muszę napisać dwa pliki, co?

Doctrine Docs instruuje Cię, aby to zrobić.

Gdzie to mówi?

tutaj:

W CLI-config, wygląd dla kodu

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

tutaj, GetEntityManager() nie jest częścią żadnej biblioteki ani kodu, jest to własna niestandardowa metoda, którą Doctrine proponuje napisać samemu, gdzie ta metoda zwraca instancję z Doctrine\ORM\EntityManager. Myślę, że komunikat doktrynalny może być bardziej przejrzysty w tej części.

Nadal nie mogę tego zrobić, Dokumenty są zbyt ostre, Pomóż!

Jeśli masz zbyt wiele warstw w swojej konfiguracji, tj. Próbujesz opracować Doktrynę za pomocą ZF2 z Symphony, może to być problem z ustaleniem dokąd Doctrine kończy się w miejscu, w którym zaczyna się framework itp. Spróbuj samodzielnie skonfigurować Doctrine w oddzielny pojemnik testowy, postępując zgodnie z Doctrine docs, bez korzystania z jakiejkolwiek struktury, a rzeczy powinny stać się bardzo jasne.

Oto, co zrobiłem dla mojej konfiguracji Doctrine.Zdecydowałem się utworzyć 3 pliki dla elastyczności i umieścić je wszystkie w moim folderze ./config mojej struktury folderów Zend.

Po pierwsze, mam 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); 

Następnie mój 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'; 

I wreszcie mój doctrine-config.php. Jest on oddzielony i łatwy sposób wywołania tego pliku z innych części kodu. W moim przypadku jest to nazywane CLI i od pojedynczego ZF2, gdy potrzebuję połączenia Doctrine.

// 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

Co powinieneś zrobić, gdy nie masz tych plików? Doctrine-docs nie dają mi żadnego wyjaśnienia, jak je zdobyć lub gdzie powinienem ich szukać ... – nclsvh

+0

Możesz je samemu stworzyć. tj. Jak skonfigurowałeś Doctrine? Użyłem Composer 'php composer.phar wymaga" doctrine/orm "'. Jeśli nie masz kompozytora, zainstaluj go jako pierwszy. (Nie ma sensu próbować bez niego walczyć). Następnie utwórz własny plik 'bootstrap.php', skopiuj go tak, aby był taki sam jak w pierwszym linku, a następnie zmodyfikuj go, aby dodać swoje specyficzne parametry bazy danych. Następnie stwórz własne 'cli-config.php', tak jak w drugim linku. – Dennis

+0

Tak, wydaje się, że nie mam tych plików ... Nie, po co, może dlatego, że pracuję w niestandardowej wersji środowiska domowego. Zainstalowałem wszystko z kompozytorem, ale nigdy nie dit php composer.phar, tylko prosty kompozytor wymaga ***. W każdym razie spróbuję zrobić to ręcznie, dzięki .. – nclsvh