@ORM \ Id没有在symfony中为一个实体标识一个实体
我拥有一个由许多特征组成的类城市。@ORM Id没有在symfony中为一个实体标识一个实体
/**
* @ORM\Entity
* @ORM\Table(name="City")
* @SoftDeleteable(fieldName="deletedAt")
*/
class City
{
use IdentifiableEntity;
use TimestampableEntity;
}
我有一个特质IdentifiableEntity
trait IdentifiableEntity
{
/**
* @var integer
* @ORM\Column(name="id", type="integer", options={"unsigned":true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//setter getter
}
当我执行斌/控制台学说出现问题:迁移: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")
也没有帮助。怎么了?
P.S.我使用的是symfony 3.2和doctrine/doctrine-migrations-bundle:1.0
只有当您的城市城市有其他$ id属性而没有注释时才有可能。所以它从特质中覆盖了$ id。否则,请确保这是确切的City类,而不是另一个名称空间中的其他某些其他类。
我不太确定我了解第二部分,所以我再问一次:你说我必须每次都从一个特性重写一个$ id以使其工作? – user7808407
他的意思是你的城市实体必须有一个$ id属性,而这个$ id属性将被你的特质所覆盖。如果你的特质的唯一目的是在你的实体上有一个$ id属性作为主键,那么你应该避免使用它 – OlivierC
我的意思是,如果你要从特质中得到一个id,请确保你没有一个id城市类。因为来自City类的id将优先于教条而不是来自trait。 –
任何机会你有另一个实体,指向这个'城市'实体,指向错误的命名空间的协会? (AppBundle \ Entity \ City \ City)
@SamJanssens,但它是指向此实体的正确命名空间。 – user7808407
似乎不可能在特质中创建主键。奇怪我很难找到任何有关它的信息 – user7808407