The usual way to update an entity is like this:
$em = $this->getDoctrine()->getManager();
$product = $em->getRepository('AppBundle:Product')->find($id);
$product->setName("New product name!");
$em->flush();
Calling persist() is not necessary: since you fetched the $product object from Doctrine, it's already managed.
But: what if fetch an entity and then pass it onto a update function, like so:
// Somewhere in the application I get the Product entity, call a setter, and want to save the Entity:
$product->setName("A new name!");
$productService->update($product);
// Inside productService:
function update(Product $product) {
// what to do here to update the entity? Is it still managed?
$em = $this->getEntityManager();
$em->persist($product);
$em->flush();
}
Calling persist() would not be necessary if it's still managed, but is it? The code in update(..) does seem to work, but is it the right way to do it?