Doctrine 2 - “Getting Started XML-Edition”的问题 - 生成数据库模式

时间:2010-08-23 21:04:22

标签: php orm doctrine doctrine-orm

之前从未接触过Doctrine(1或2),我正在关注this tutorial for 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 个答案:

答案 0 :(得分:2)

XML入门中的文档在这方面已经过时了。请参阅手册中有关如何配置CLI工具的“工具”部分:

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/tools.html

所有其余的仍然按照描述的方式工作。我会尽快更新这部分内容。

答案 1 :(得分:2)

假设您使用 pear

安装了Doctrine

$ 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 在它之前和之后应该有两个下划线。出于某种原因,它们没有显示)。

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