在一个旧项目中使用symfony 1.4
有一个对象Product
链接到其他对象,例如Translation
ProductPlatform
...
我想做的是copy
Product 对象及其所有关系。
很简单$product->copy(true)
BUT
它不会复制关系,所以我需要这样做:
$this->loadReference('Translation');
$this->loadReference('ProductPlatforms');
foreach ($this->ProductPlatforms as $platform) {
$platform->loadReference('Translation');
}
$newProduct = $this->copy(true);
$newProduct->save();
return $newProduct;
抛出的错误是这样的:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-131' for key 'product_platform_position_sortable_idx'
我不明白的是以下请求:
SELECT p.id AS p__id, p.position AS p__position FROM product_platform p
WHERE (p.product_id = 'EndNote (copie)') ORDER BY p.position desc LIMIT 1;
----
INSERT INTO product_platform (publish_configuration, product_id, platform_id, position)
VALUES ('1', '131', '1', '1')
然后,它为另一个对象重新插入相同的位置:
INSERT INTO product_platform (publish_configuration, product_id, platform_id, position)
VALUES ('1', '131', '3', '1');
为什么在Where
子句中我的对象的名称而不是 ID WHERE (p.product_id = 'EndNote (copie)')
。我认为这就是它尝试插入相同值的原因。