我是处理学说的初学者。我去了他们的网站,发现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?
提前致谢。
答案 0 :(得分:0)
为什么需要触发连接?它在第一次使用时会懒洋洋地连接起来。在EntityManager :: create方法之后你应该很好。
答案 1 :(得分:0)
我不能真正说出你如何描述这个问题,但我建议你使用一个调试器,比如Zend Studio中嵌入的一个调试器(或者你可以使用任何基于eclipse的IDE如Aptana设置Zend) 。这将使事情变得更加清晰。