symfony - Updated entity adds new row to database -
i trying update entities using ajax adds new row instead update existing one.
my entities:
- category
- product
- subcategory
relations:
category manytomany product
category onetomany subcategory
category entity
/** * @orm\manytomany(targetentity="test\corebundle\entity\product", inversedby="categories", cascade={"persist"}) * @groups({"public", "admin"}) */ protected $products; public function setproducts( $products) { $this->products= new arraycollection($products->toarray()); return $this; } product entity
/** * @orm\manytomany(targetentity="test\corebundle\entity\category", mappedby="products" ) * @exclude() */ protected $categories; controller
$tosave = $this->get('request')->getcontent(); $s = $serializer->deserialize($tosave, test\corebundle\entity\category, 'json'); if ($s->getid() > 0) { $category= $em->getrepository('testcorebundle:category)->findoneby(['id' => $s->getid()]); $category->setname($s->getname()); $category->setisdisabled($s->getisdisabled()); $category->setisprivate($s->getisprivate()); $category->setquestions($s->getcategories()); $em->persist($category); $em->flush(); } problem:
this code adds new products database, want update existing records.
things tried:
- replaced
persistmerge, made no difference. - removed
persist, same result
i solved problem following way:
1) replaced persist merge.
$em->merge($category); $em->flush(); 2) changed cascade option persist merge
/** * @orm\manytomany(targetentity="test\corebundle\entity\product", inversedby="categories", cascade={"merge"}) * @groups({"public", "admin"}) */ protected $products;
Comments
Post a Comment