Symfony2:缺少分配的ID

时间:2012-06-22 15:15:54

标签: symfony doctrine-orm

我有Place和Placetype实体。 我的Place实体将其id属性设置为AUTO:

/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

但是当我想坚持一个对象时,我得到了以下错误:

  

blabla \ Entity \ Place类型的实体缺少指定的ID。该   此实体的标识符生成策略需要ID字段   在调用EntityManager#persist()之前填充。如果你想   自动生成的标识符,而不是你需要调整   相应的元数据映射。

你知道如何解决这个问题吗?

感谢您的帮助

4 个答案:

答案 0 :(得分:5)

它取代了这个:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

到此:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 */
private $id;

答案 1 :(得分:1)

试试这个:

/**
 * @var integer $uid
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

将策略设为“IDENTITY”

答案 2 :(得分:1)

错误配置外键时可能会发生此错误。在这种情况下,您需要使用IDENTITY策略。 例如:

一个啤酒有一个饮酒者

  

beer.id_drinker = drinker.id

但是这里:

ALTER TABLE `drinker`
ADD CONSTRAINT `drinker_ibfk_1` FOREIGN KEY (`id`) REFERENCES `beer` (`id_drinker`);

哪个是BAD> drinker.id = beer.id_drinker

GOOD:

ALTER TABLE `beer`
ADD CONSTRAINT `beer_ibfk_1` FOREIGN KEY (`id_drinker`) REFERENCES `drinker` (`id`);

答案 3 :(得分:0)

我使用symfony 3.2.x 如果使用yml,你应该添加:

generator:
            strategy: IDENTITY

完整示例:

id:
    id:
        type: integer
        nullable: false
        options:
            unsigned: false
        id: true
        generator:
            strategy: IDENTITY

此致