The Hard Way
Есть два файла, вы должны написать сами: bootstrap.php
и cli-config.php
Зачем мне писать два файла, да?
Doctrine Docs предписывают вам это сделать.
Где это так?
Здесь:
кли-конфигурации, смотрите для кода
// 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'
);
Некоторые объяснения были бы замечательными здесь! –
Инструмент Doctrine Console в моем вопросе ожидает, что среда с полностью определенным менеджером сущностей сможет работать. Инструмент 'doctrine-module' должен использовать что-то еще или совсем другой инструмент, поскольку он не требует, чтобы менеджер объектов работал. Вместо того, чтобы выяснить, как определить диспетчер сущностей или как определить среду ZF2 для использования схемы схемы доктрины, я решил использовать инструмент «doctrine-module», который не требовал от меня каких-либо дополнительных настроек , – Dennis
Дает мне ошибку «Нет такого файла или каталога» (я использую Symfony 2.7 btw ...) – nclsvh