Doctrine 2 - проблемы с «Getting Started XML-Edition» - создание схемы базы данных - PullRequest
1 голос
/ 24 августа 2010

Никогда ранее не затрагивая Doctrine (1 или 2), я следую этому учебнику для Doctrine 2 .

Я нахожусь в точке, где я использую командную строку для генерациисхема базы данных.Это файл cli-config.php, согласно учебнику:

<?php
$cliConfig = new Doctrine\Common\Cli\Configuration();
$cliConfig->setAttribute('em', $entityManager);

Когда я его запускаю, я просто получаю сообщение об ошибке:

Fatal error: require(): Failed opening required 'Doctrine\Common\Cli\Configuration.php' 

Поскольку этот класс ссылается нафайл cli-config.php не существует.Я также попытался очистить файл cli-config.php, который, конечно, тоже не работает - говорит, что «помощник» em «не определен».

Я использую версию 2.0.0BETA3,Я знаю, что это бета-версия, поэтому они могли изменить некоторые файлы, но я нигде не могу найти этот класс.

Есть идеи, как заставить его работать?

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Предполагается, что вы установили Doctrine, используя pear

$ sudo pear install pear.doctrine-project.org/doctrineORM

, который установит три пакета Doctrine 2: DoctrineCommon, DoctrineDBAL и DoctrineORM. В Ubuntu эти пакеты будут расположены в / usr / share / php / Doctrine, а утилита командной строки doctrine будет установлена ​​в / usr / bin.

С этой настройкой это версия cli-config.php, которую вы можете использовать (примечание: DIR должно иметь два подчеркивания до и после него. По какой-то причине они не отображались). 1011 *

<?php
require ‘Doctrine/ORM/Tools/Setup.php’;
// Setup Autoloader (1)
Doctrine\ORM\Tools\Setup::registerAutoloadPEAR();

require_once 'Doctrine/Common/ClassLoader.php';

$classLoader = new Doctrine\Common\ClassLoader('Entities', __DIR__); 

$classLoader->register();

$classLoader = new Doctrine\Common\ClassLoader('Proxies', __DIR__); 

$classLoader->register();

$config = new \Doctrine\ORM\Configuration();

$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache);

$driverImpl = $config->newDefaultAnnotationDriver(array(__DIR__."/Entities"));

$config->setMetadataDriverImpl($driverImpl);

$config->setProxyDir(__DIR__ . '/Proxies');

$config->setProxyNamespace('Proxies');

$connectionOptions = array(
        'driver' => 'pdo_mysql',
        'dbname' => 'bugs',
        'user' => 'bugs',
        'password' => 'xyzabc',
  'host' => 'localhost' );

$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);

$helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()),
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em)
));
2 голосов
/ 25 августа 2010

В этом отношении документы в XML Getting Started устарели. См. Раздел «Инструменты» в руководстве о том, как настроить инструмент CLI:

http://docs.doctrine -project.org / проекты / Доктрина-ОРМ / ен / 2.0.x / ссылка / tools.html

Все остальное работает, как описано. Я обновлю эту часть как можно скорее.

...