我有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()之前填充。如果你想 自动生成的标识符,而不是你需要调整 相应的元数据映射。
你知道如何解决这个问题吗?
感谢您的帮助
答案 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
此致