在使用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
子句WHERE (p.product_id = 'EndNote (copie)')
中的对象名称不是ID,而是ID。 我认为这是它尝试插入相同值的原因。
答案 0 :(得分:0)
好的,这是Sortable行为的一个错误,我们发了一个PR:
https://github.com/bshaffer/csDoctrineActAsSortablePlugin/pull/25