【问题标题】:Doctrine MappedSuperclass and unique constraintsDoctrine MappedSuperclass 和唯一约束
【发布时间】:2015-04-16 04:55:20
【问题描述】:

我有一个场景,我需要使用 Doctrine 的 MappedSuperclass 功能(使用 Symfony2),并在某些超类列上创建唯一约束。比方说:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\MappedSuperclass
 */
class Base
{
    /**
     * @ORM\Column(type="integer", nullable=false)
     */
    private $someColumn;
}

/**
 * @ORM\Entity
 * @ORM\Table(uniqueConstraints={@ORM\UniqueConstraint(name="column_idx", columns={"someColumn"})})
 */
class Concrete extends Base
{
}

问题在于在模式生成期间处理@ORM\Table 注释:

[Doctrine\DBAL\Schema\SchemaException]                          
There is no column with name 'someColumn' on table 'Concrete'.

有没有办法定义映射超类的唯一约束?

【问题讨论】:

  • 试试some_column,因为学说将camelCase转换为underscore_case
  • @kmlnvm 不起作用 - 同样的错误。
  • 我刚刚用 camelCase 测试了它,它可以工作,我不明白你为什么会出错
  • 生成实体,可能是没有getter/setter造成的
  • @krojew 尝试使用protected 而不是private 作为实体字段。对于实体字段,您应该始终使用 protectedpublic

标签: php symfony doctrine-orm


【解决方案1】:

由于答案作者自己没有发布答案,所以我引用他:

尝试对实体字段使用受保护而不是私有。对于实体字段,您应该始终使用 protected 或 public

【讨论】:

  • 另外,我想说的是,如果属性在 Trait 内,它将不起作用。
猜你喜欢
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-23
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多