学说2配置

时间:2010-12-23 22:30:44

标签: php doctrine-orm

我是处理学说的初学者。我去了他们的网站,发现2.0版(稳定版)似乎是最新版本。使用PEAR方法安装它虽然有一些困难。文档对我来说似乎很乱,但是我在网上搜索并找到了boostrap文件的样本。可以找到Doctrine 2.0的文档here

`我按照说明进行操作,并包含了类别的laoding文件和require_once('libs / Doctrine / Common / ClassLoader.php');在开始。

$classLoader = new \Doctrine\Common\ClassLoader('Doctrine', 'libs');
$classLoader->register();

$classLoader = new \Doctrine\Common\ClassLoader('Symfony', 'libs');
$classLoader->register();

$classLoader = new \Doctrine\Common\ClassLoader('Entities', 'libs');
$classLoader->register();

$classLoader = new \Doctrine\Common\ClassLoader('Dao', 'libs');
$classLoader->register();

$config = new \Doctrine\ORM\Configuration();
$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache);
$config->setProxyDir('/Proxies');
$config->setProxyNamespace('Proxies');

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

$connectionOptions = array(
'dbname' => 'db',
'user' => 'root',
'password' => 'mypassword',
'host' => '127.0.0.1',
'driver' => 'pdo_mysql',);

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

// At this point no actual connection to the database is created
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionOptions);//('mysql:  //root:127.0.0.1@127.0.0.1/db');
// The first time the connection is needed, it is instantiated
// This query triggers the connection to be created
$conn->exec('SHOW TABLES');`

在版本2中发现方法“execute”是“exec”,并且在版本2中使用DriverManager而不是其他东西。现在,当我尝试测试Doctrine是否有效时,它没有给出任何输出,并且给出了意外的T_STRING错误,这实际上意味着命令不被理解。

对于版本1.2,有一个使用getPath()的测试,但是这个函数在版本2.0中不存在,或者可能还有其他我做错了。请注意,$ conn-> exec也没有做任何事情。

我运行Windows 7和WAMP Server版本2,PHP 5.3.3。我在项目目录中输出了Doctrine的文件夹,虽然我真的没有得到PEAR安装的内容?有没有机会在没有添加到项目目录的情况下使用Doctrine?

提前致谢。

2 个答案:

答案 0 :(得分:0)

为什么需要触发连接?它在第一次使用时会懒洋洋地连接起来。在EntityManager :: create方法之后你应该很好。

答案 1 :(得分:0)

我不能真正说出你如何描述这个问题,但我建议你使用一个调试器,比如Zend Studio中嵌入的一个调试器(或者你可以使用任何基于eclipse的IDE如Aptana设置Zend) 。这将使事情变得更加清晰。