我正在使用Zend Framework和Doctrine 2构建应用程序。
我的代码如下所示:
namespace Entities;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @Entity (repositoryClass="Repositories\Person")
* @Table(name="persons")
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="type", type="string")
* @DiscriminatorMap({"2"="User"})
*/
class Person
{
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
}
我的班级用户
namespace Entities;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @Entity (repositoryClass="Repositories\User")
*/
class User extends Person
{
}
现在,我收到了这个错误:
Fatal error: Class 'Entities\Person' not found in C:\xamp\htdocs\Persons\application\m
odels\Entities\User.php on line 13
我不知道为什么会出现这个错误。我曾尝试以多种不同方式调用“Person”类,但它不起作用。任何的想法?谢谢!
答案 0 :(得分:1)
在Zend Framework中运行时,您有一个自动加载器设置,可以动态地为您加载类。
当您从命令行运行Doctrine工具时,您没有可供使用的自动加载器。 Doctrine正在尝试加载需要Person的User类,但它(显然)并不知道如何加载Person。
我认为简单的解决方案是让require_once('Person.php');
位于用户实体的顶部。对于ZF来说这可能是不必要的,但对Doctrine命令行工具很有帮助。