我想通过制作一个非常简单的脚本来从我的数据库中获取信息来了解如何使用Doctrine 2。问题是,我找不到任何文件解释如何找到和使用我的映射实体。所以当它抱怨说它没有找到一个实体时,我不知道该怎么做来解决这个问题。考虑我的WWW文件夹的结构如下:为什么Doctrine 2找不到我的实体?
- 主义/
- 实体/
-
- person.php
- myTestPage.php
person.php
myTestPage.php
<?php
require "Doctrine/Doctrine/ORM/Tools/Setup.php";
$lib = "Doctrine";
Doctrine\ORM\Tools\Setup::registerAutoloadDirectory($lib);
use Doctrine\ORM\Tools\Setup,
Doctrine\ORM\EntityManager;
$paths = array("/Entities");
$isDevMode = true;
$dbParams = array("driver" => "pdo_mysql",
"host" => "myhost.ca",
"user" => "Shawn",
"password" => "noneofyourbusiness",
"dbname" => "testDB");
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$em = EntityManager::create($dbParams, $config);
$qb = $em->createQueryBuilder();
$qb->select(array('uid'))
->from('person', 't');
$query = $qb->getQuery();
$result = $query->getResult();
echo $result;
?>
当我访问myTestPage.php,我收到以下错误信息:
Fatal error: Uncaught exception 'Doctrine\ORM\Query\QueryException' with message '[Semantical Error] line 0, col 24 near 'person': Error: Class 'person' is not defined.' in C:\wamp\www\Doctrine\Doctrine\ORM\Query\QueryException.php on line 47
这个问题似乎是学说无法找到person.php,但我该如何解决这个问题?
对不起,我忘了更改错误信息中的表名,它应该说'人'(我现在改了它)。当我手动“需要”实体/ person.php“;”时,错误信息会改变,并说uid没有被定义。然后,我在表名前添加't.',现在一切正常。所以你一直都是对的。自动加载器不工作,我可以通过手动要求类文件解决该问题。我想知道为什么自动装载机不工作,虽然... – Shawn 2012-08-15 13:51:37
我不知道关于主义的自动装载机,因为我用我自己的,但正如我所说,他们的文件是非常清楚,有很好的例子,所以你应该有通过这个没有麻烦。 – Pinetree 2012-08-15 22:41:47
其实我确实有些麻烦。我用PEAR重新安装了Doctrine,现在我可以使用'Setup :: registerAutoloadPEAR(); $ cl = new Doctrine \ Common \ ClassLoader('Entities',__DIR__); $ cl-> register();' – Shawn 2012-08-16 14:32:20