由于缺少ID,Doctrine 2仍然无法插入

时间:2016-02-16 22:10:48

标签: php mysql doctrine-orm

在尝试使用Doctrine 2的持久冲洗方法进行插入时,我根本无法使用它。元数据设置为生成一个值(我尝试过AUTO和IDENTITY但没有成功),但它仍然没有自动递增。我还注意到数据库的架构," id"列未设置为自动递增。有问题的实体不包含前/后持续功能。

  

XXXX类型的实体缺少字段“id'”的已分配ID。此实体的标识符生成策略要求在调用EntityManager#persist()之前填充ID字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。

/**
 * @Id 
 * @Column(type="integer")
 * @GeneratedValue
 */
protected $id;

我想知道是否有人对此有任何见解,因为我似乎无法找到任何谷歌或stackoverflow结果有帮助。谢谢!

3 个答案:

答案 0 :(得分:0)

您必须在注释前添加@ORM\,如下所示:

use Doctrine\ORM\Mapping as ORM;

...

/**
 * @ORM\Id 
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue
 */
protected $id;

答案 1 :(得分:0)

因此,问题似乎是由于有多个列带有@GeneratedValue注释(即使它设置为NONE)。删除那些并留下唯一的$ id修复了问题。

答案 2 :(得分:0)

我通过清除缓存来解决此问题。