[英]Doctrine 2.0: get classloader to work for entities
我一直在努力将实体加载到我的第一个Doctrine 2.0项目中。 除了加载我的实体类之外,其他所有东西都正常运行(让其他类加载,与数据库通过DBAL的连接成功)。
我会为您提供所需的信息。
我的文件夹的结构是这样的
public_html -> docrine test -> entities -> User.php -> Video.php
在我的引导文件中,我试图用
<?php $sRoot = "/home/..../public_html/doctrinetest"; $classLoader = new \\Doctrine\\Common\\ClassLoader('doctrinetest\\entities', $sRoot.'/doctrinetest/entities'); $classLoader->register(); // register on SPL autoload stack
作为名称空间,我在违反类之前放置了以下行
namespace doctrinetest\\entities;
然后,当我尝试运行命令以生成我的方案时
$tool = new \\Doctrine\\ORM\\Tools\\SchemaTool($em); $classes = array( $em->getClassMetadata('Video'), $em->getClassMetadata('User') ); $tool->createSchema($classes);
我得到错误
Warning: class_parents() [function.class-parents]: Class Video does not exist and could not be loaded in /home/..../public_html/doctrine2-tarball/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 40
请帮我解决这个问题,谢谢
首先,\\ Doctrine \\ Common \\ ClassLoader在“ includePath / namespace /”目录中找到类。
<?php
$sRoot = "/home/..../public_html/doctrinetest";
$classLoader = new \Doctrine\Common\ClassLoader('doctrinetest\entities', $sRoot.'/doctrinetest/entities');
$classLoader->register();
?>
上面的代码尝试在“ /home/..../public_html/doctrinetest/doctrinetest/entities/doctrinetest/entities/”目录中找到类。 当然,找不到类。
其次,EntityManager的getClassMetadata函数希望className 包括参数的名称空间 。
因此像这样使用。
$em->getClassMetadata('\\doctrinetest\\entities\\Video');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.