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'
);
Niektóre wyjaśnienia byłyby świetne tutaj! –
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
Daje mi błąd "Brak takiego pliku lub katalogu" (Używam Symfony 2.7 btw ...) – nclsvh