@ORM\Id 不会为 symfony 中的实体创建标识符

问题描述 投票:0回答:2

我有一个由许多特征组成的类城市。

/**
 * @ORM\Entity
 * @ORM\Table(name="City")
 * @SoftDeleteable(fieldName="deletedAt")
 */
class City
{
    use IdentifiableEntity;
    use TimestampableEntity;    
}

我有一个特征 IdentifyingEntity

trait IdentifiableEntity
{
    /**
     * @var integer
     * @ORM\Column(name="id", type="integer", options={"unsigned":true})
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;
    //setter getter
}

当我执行 bin/console 学说:迁移:diff 时出现问题我收到此错误消息

[Doctrine\ORM\Mapping\MappingException]                                                                                         
  No identifier/primary key specified for Entity "AppBundle\Entity\City\City". Every Entity must have an identifier/primary key. 

这是为什么呢?我在我的特质中明确指出,

$id
应该像
@ORM\Id
一样对待。添加
@ORM\GeneratedValue(strategy="IDENTITY")
也没有帮助。怎么了?

附注我正在使用 symfony 3.2 和doctrine/doctrine-migrations-bundle: 1.0

symfony doctrine-orm orm mapping symfony-3.2
2个回答
0
投票

仅当您的 City 类具有其他没有注释的 $id 属性时,这才有可能。所以它会覆盖特征中的 $id 。 否则,请确保这是确切的 City 类,而不是其他命名空间中的其他类。


0
投票

如果还有人关心的话。

不,特征中不可能有字段,其中这些字段具有配置或映射字段 https://www.doctrine-project.org/projects/doctrine-orm/en/3.1/reference/limitations-and-known-issues.html#using-traits-in-entity-classes

© www.soinside.com 2019 - 2024. All rights reserved.