php - Doctrine2 - 单表继承

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

我正在尝试应用这个 tutorial到我的项目,但我没有让它工作。每次我尝试更新我的模式时,我都会收到错误消息: fatal error :无法在......中重新声明类 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
{      
....
}

感谢任何帮助或提示。

更新:

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

我刚刚尝试了 Doctrine 文档中的示例,只是分成两个实体文件,但它不起作用。然后我在 ProjectSetting 的文件中复制了 ProjectCalculation 类,它正在工作。

更新 2:

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

最佳答案

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

关于php - Doctrine2 - 单表继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7982080/

相关文章:

PHP 遍历对象数组给出了意想不到的结果

php - Doctrine + Twig,如何在有限制的 OneToMany 关系中显示 Doctrine 集合?

php - 来自 PHP 的 MongoDB 集合 runCommand

php - 如何防止 PHP 中的 SQL 注入(inject)?

php - Doctrine2 - 无法删除具有单向 oneToMany 关系的实体

php - 从学说和 native mysql 查询中获取最后插入的 ID

ruby-on-rails - 使用 Devise 和 STI 设计具有多种用户类型的 Rails 应用程序

ruby-on-rails - Rails STI,子类除非使用否则不会显示?

hibernate 故障 : INSERT instead of UPDATE when using Inheritance:SINGLE_TABLE and SecondaryTables

php - 如何使用 HTML 图像按钮和 PHP?