Consider the following code
$user = $entityManager->find('User', 1);
$products = array();
foreach(array(1, 3, 4) as $product_id) {
$products[$product_id] = $entityManager->getReference('MyBundle\Entity\Product', $product_id);
}
$user->setProducts($products);
$entityManager->persist($user);
$entityManager->flush();
And is setProductsdefined as
function setProducts($products) {
$this->products = new ArrayCollection($products);
}
, , .
, visit visit_tag. , visit_tag visit , .

/ , $user->products ArrayCollection , , . , indexBy, // (.. product id) .
class User
{
protected $products;
public function setProducts($products) {
foreach($this->products as $id => $product) {
if(!isset($products[$id])) {
$this->products->remove($id);
}
else {
unset($products[$id]);
}
}
foreach($products as $id => $product) {
$this->products[$id] = $product;
}
}
}
, ( ) .

, , db , . :
1
2
2 , . , , 1, , .