В первом примере вы вызываете методы "setTitle", "setMetaDescription", "setMetaKeywords" в результате получения "getSeoMetadata".Этот результат не является $ entity, но вы исключаете чистоту только $ entity.
См .:
$entity->getSeoMetadata()
Возвращает что-то (я угадываю объект), и вы устанавливаете данные для объекта, а не для$ entity:
$entity->getSeoMetadata()->setMetaKeywords($metaKeywords);
В приведенном выше примере "setMetaKeywords ()" вызывается по РЕЗУЛЬТАТУ "getSeoMetadata ()".Что вы получаете от этого метода?
Я бы сделал это так:
$entity = $this->galleryManager->findByLink($link);
$entitySeoMetadata = $entity->getSeoMetadata();
$entitySeoMetadata->setTitle($metaTitle);
$entitySeoMetadata->setMetaDescription($metaDescription);
$entitySeoMetadata->setMetaKeywords($metaKeywords);
/*
* persist only if the item is new. If you have fetched this from doctrine,
* do not persist it - just flush without persist.
*
* $em->persist($entity);
*/
$em->flush();