Php Doctrine2错误地级联了一对一的关系
我有两个学说实体:Php Doctrine2错误地级联了一对一的关系,php,doctrine-orm,symfony,one-to-many,Php,Doctrine Orm,Symfony,One To Many,我有两个学说实体: 康姆萨 和管道 /** * @ORM\Id * @ORM\Column(type = "bigint") * @ORM\GeneratedValue(strategy = "AUTO") */ private $id; /* ... */ /** * @ORM\ManyToOne(targetEntity = "AppBundle\Entity\Commessa\commessa", inversedB
康姆萨 和管道
/**
* @ORM\Id
* @ORM\Column(type = "bigint")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
private $id;
/* ... */
/**
* @ORM\ManyToOne(targetEntity = "AppBundle\Entity\Commessa\commessa", inversedBy = "pipelines")
* @ORM\JoinColumn(name = "id_commessa", name = "id")
*/
private $commessa;
如您所见,这两个实体都有一个称为id的自动递增单字段主键,以及与另一个实体的双向关联;只要我使用commessa,管道就会自动持久化。此外,这两个实体都只有id的getter方法,而不是setter方法 现在,每当我尝试刷新包含多个管道的Commessa类的对象实例时,都会弹出以下错误: 使用参数[“”、“前端”、“9”]执行“插入管道(描述、命名逻辑、id)值(?,?)”时发生异常: SQLSTATE[23000]:完整性约束冲突:密钥“PRIMARY”的1062重复条目“9” 在我的代码中,我没有设置管道的id,在刷新之前(以及持久化之后)转储Commessa对象表明它已正确填充,并且管道的id为“null”,我猜这是正确的 通过Symfony profiler,将报告以下查询:
"START_TRANSACTION"
INSERT INTO commessa (codice_commessa, data_creazione, data_scadenza, descrizione, id_anagrafica, id_cliente, id_stato, id_tipo_commesa) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
Parameters: [ 1 => lyme, 2 => 2017-01-13 10:47:53, 3 => 2017-01-17 00:00:00, 4 => Fai Lyme, 5 => 1, 6 => 1, 7 => 1, 8 => 1 ]
INSERT INTO pipeline (descrizione, nome_logico, id) VALUES (?, ?, ?)
Parameters: [1 => , 2 => frontend, 3 => 10]
INSERT INTO pipeline (descrizione, nome_logico, id) VALUES (?, ?, ?)
Parameters: [1 => , 2 => backend, 3 => 10]
"ROLLBACK"
然后我偶然发现,在第28.1.3点
现在有两个bug与级联合并和双向关联的使用有关。
但是相关的票务链接已经失效
这可能是我的问题吗?
如果是,我如何解决这个问题?@ORM\JoinColumn(name=“id\u commessa”,name=“id”)是错误的。有两个times name字段我假设这两个对象实际上不是同一个对象,添加两次?(因为它们的属性都相同)对不起,我错误地复制了两次相同的查询;第二个字段是不同的。我编辑了这个问题。*@ORM\JoinColumn(name=“id\u commessa”,name=“id”)是错误的。有2倍的名字field@JasminMistry谢谢你的回答;如果你是对的,请接受ans
"START_TRANSACTION"
INSERT INTO commessa (codice_commessa, data_creazione, data_scadenza, descrizione, id_anagrafica, id_cliente, id_stato, id_tipo_commesa) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
Parameters: [ 1 => lyme, 2 => 2017-01-13 10:47:53, 3 => 2017-01-17 00:00:00, 4 => Fai Lyme, 5 => 1, 6 => 1, 7 => 1, 8 => 1 ]
INSERT INTO pipeline (descrizione, nome_logico, id) VALUES (?, ?, ?)
Parameters: [1 => , 2 => frontend, 3 => 10]
INSERT INTO pipeline (descrizione, nome_logico, id) VALUES (?, ?, ?)
Parameters: [1 => , 2 => backend, 3 => 10]
"ROLLBACK"