Я пытаюсь изменить старый набор массива $ linhas на новый, используя метод
setLinhas (Arraycollection $ linhas)
но что происходит, когда он вносит изменения, так это то, что внутри он создает новый объект с новыми строками и не обновляет старый объект новыми строками. Создает новый экземпляр с теми же значениями, что и у старого объекта. Предполагалось обновить тот же объект, а не создавать новый!
Имущество субъекта:
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\LinhasPrecos", mappedBy="preco",orphanRemoval=true,cascade={"persist","merge"})
*/
protected $linhas;
/**
* @param $linhas
*/
public function setLinhas($linhas)
{
$this->linhas = new ArrayCollection($linhas);
}
В сервисе:
$oldObject->setLinhas($newObectWithNewLinhas->getLinhas());
$this->em->persist($oldObject);
но если я сделаю изменение вручную, оно будет работать:
$oldLinhas = $oldObject->getLinhas()->getValues();
foreach($oldLinhas as $oldLinha)
{
$oldObject->removeLinha($oldLinha);
}
$linhaToCopy = $newObectWithNewLinhas->getLinhas()->getValues();
foreach($linhasCopyNew as $linhaCopyNew)
{
$oldObject->addLinha($linhaCopyNew);
}
спасибо заранее!