【发布时间】:2016-02-16 22:10:47
【问题描述】:
在尝试使用 Doctrine 2 的 persist-flush 方法进行插入时,我根本无法让它工作。元数据设置为生成一个值(我尝试了 AUTO 和 IDENTITY 但没有成功),但它仍然不是自动递增的。我还注意到数据库的架构,“id”列也没有设置为自动增量。有问题的实体不包含 pre/post-persist 函数。
XXXX 类型的实体缺少为字段“id”分配的 ID。此实体的标识符生成策略要求在调用 EntityManager#persist() 之前填充 ID 字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。
/**
* @Id
* @Column(type="integer")
* @GeneratedValue
*/
protected $id;
我想知道是否有人对此有任何见解,因为我似乎找不到任何有帮助的 google 或 stackoverflow 结果。谢谢!
【问题讨论】:
-
当您设置
@GeneratedValue(strategy="AUTO")时,您是否清除了注释缓存并尝试更新架构? -
我使用刷新开关清除了所有三个缓存(查询、元数据和结果),没有任何变化。
-
如果您使用的是学说 ORM,那么您的注释是错误的。您需要将其声明为 '@ORM\Id', '@ORM\Column(type="integer")', '@ORM\GeneratedValue(strategy="IDENTITY")'
-
我有“使用 Doctrine\ORM\Mapping 作为 ORM;”在我的文件的开头,所以它应该可以正常工作吗?
标签: php mysql doctrine-orm