我有一个场景,我需要使用Doctrine的MappedSuperclass功能(使用Symfony2),并在一些超类列上创建一个唯一的约束。比方说:
use DoctrineORMMapping as ORM;
/**
* @ORMMappedSuperclass
*/
class Base
{
/**
* @ORMColumn(type="integer", nullable=false)
*/
private $someColumn;
}
/**
* @ORMEntity
* @ORMTable(uniqueConstraints={@ORMUniqueConstraint(name="column_idx", columns={"someColumn"})})
*/
class Concrete extends Base
{
}
问题出现在模式生成过程中处理@ORM\Table注释时:
[DoctrineDBALSchemaSchemaException]
There is no column with name 'someColumn' on table 'Concrete'.
有没有一种方法可以定义映射超类的唯一约束?
由于答案作者自己没有发布答案,让我引用他的话:
请尝试对实体字段使用protected而不是private。您应该始终使用受保护的或公共的实体字段