Doctrine2 - 单表继承

时间:2011-11-02 14:33:58

标签: php doctrine-orm single-table-inheritance autoloader

我正在尝试将此tutorial应用于我的项目,但我没有让它工作。每次我尝试更新我的架构时都会收到错误: 致命错误:无法重新声明类中的Rueckgrat \ App \ Models \ ProjectSetting .....

我有2个文件。第一个是ProjectSetting.php

namespace Rueckgrat\App\Models;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping AS ORM;

/**
 * @ORM\Entity()
 * @ORM\Table(name="project_setting")
 * @ORM\HasLifecycleCallbacks()
 * @ORM\InheritanceType("SINGLE_TABLE")
 * @ORM\DiscriminatorColumn(name="is_production", type="integer")
 * @ORM\DiscriminatorMap({"0" = "ProjectCalculation", "1" = "ProjectSetting"})
 */
class ProjectSetting
{
// More code here
}

第二个是ProjectCalculation.php

namespace Rueckgrat\App\Models;
use Doctrine\ORM\Mapping AS ORM;
/**
 * @ORM\Entity
 */
class ProjectCalculation extends \Rueckgrat\App\Models\ProjectSetting
{      
....
}

任何帮助或提示都表示赞赏。

更新

完整的错误讯息: 致命错误:无法在第17行的/Applications/MAMP/htdocs/Rueckgrat/app/models/ProjectSetting.php中重新声明类Rueckgrat \ App \ Models \ ProjectSetting

我刚刚从Doctrine文档中尝试过这个示例,只是在两个实体文件中拆分而且它无法正常工作。然后我将ProjectCalculation类复制到ProjectSetting文件中,它正在运行。

更新2:

我无法更新我的架构,但是当我保存ProjectCalculation实体时,它正在将正确的鉴别器保存到project_setting表。

1 个答案:

答案 0 :(得分:1)

这可能是您机器上PHP加速器的问题。请关闭APC或XCache(无论你有什么),重启PHP / Apache并重试。