0

在一个旧项目中使用symfony 1.4有一个对象Product链接到其他对象,例如Translation ProductPlatform...

我想做的是copyProduct 对象及其所有关系。

很简单$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)')我认为这就是它尝试插入相同值的原因。

4

1 回答 1

0

好的,这是 Sortable 行为的一个错误,我们发送了一个 PR:

https://github.com/bshaffer/csDoctrineActAsSortablePlugin/pull/25

于 2012-10-04T12:00:51.533 回答