对于Collection,我想检查数据库中是否已存在新添加的Part。如果是这样,它将被新值覆盖。
/** * Add Part */ public function addPart(\MyBundle\Entity\FooTypePart $Part) { $part->setProduct($this); $this->part[] = $part; return $this; } /** */ public function removePart(\MyBundle\Entity\FooTypePart $part) { $this->part->removeElement($part); } /** * Get Part * @return \Doctrine\Common\Collections\Collection */ public function getPart() { return $this->part; } /** * Set Part */ public function setPart($part) { $this->part = $part; return $this; }
零件实体具有:ID,Category_id(FK),Product_id(FK),零件(集合)
现在可以添加具有相同名称的新零件,当已经存在具有相同Product_id和Category_id的零件时也是如此。 使零件唯一不是修复,因为零件可用于许多产品/类别。
以下示例已存在于数据库中,具有不同的“部分”。所以它应该做一个更新命令。
<?php
$part = new FooTypePart();
$part->setCategory($specification);
$part->setProduct($product);
$part->setPart('DifferentNamingThenCurrentOne');
$xx->addSpecificationValue($part);
如何? : - )
答案 0 :(得分:0)
只需使用UniqueEntity验证程序即可找到集合中已存在的项目。
您可以使用多个属性或repository method指定唯一性。这样,您就可以搜索仅具有name,product-id和category-id的唯一组合的项目。
创建验证组,即“唯一”,并通过查找无效实体来查找集合中的非唯一/存在实体。
...然后使用您的新值更新现有实体。您可能需要一些额外的逻辑,因为可能会有多个具有相同名称的字段添加到您的表单集合中。