Доктрина не обновляет свойства объекта cmf SeoBundle после установки

360
12 февраля 2020, 12:10

Я использую Symfony CMF SeoBundle. Мой класс сущности использует SeoAwareTrait. Когда я пытаюсь обновить свои свойства SEO (я использую код ниже), я получаю результат со старыми значениями свойств.

$entity = $this->galleryManager->findByLink($link);
            $entity->getSeoMetadata()->setTitle($metaTitle);
            $entity->getSeoMetadata()->setMetaDescription($metaDescription);
            $entity->getSeoMetadata()->setMetaKeywords($metaKeywords);
            $em->persist($entity);
            $em->flush();

Когда я пытаюсь клонировать мои seo-свойства, Doctrine успешно сохраняет мои новые значения:

$entity = $this->galleryManager->findByLink($link);
            $entity->getSeoMetadata()->setTitle($metaTitle);
            $entity->getSeoMetadata()->setMetaDescription($metaDescription);
            $entity->getSeoMetadata()->setMetaKeywords($metaKeywords);
            $entity->setSeoMetadata(clone $entity->getSeoMetadata());
            $em->persist($entity);
            $em->flush();

Почему во втором случае доктрина обновляет результат, а в первом нет? Правильно ли я понимаю, что доктрина не воспринимает изменения свойств, которые относятся к другим объектам?

Answer 1

Возможно Вы не указали правила каскадирования. Например, это можно сделать в аннотации к полю модели с помощью параметра cascade={"persist", "remove", ...}, который обеспечивает каскадирование соответствующих операций.

Более подробно можно посмотреть здесь https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-associations.html#transitive-persistence-cascade-operations

READ ALSO
MySQL UPDATE с SELECT SUM из другой таблицы

MySQL UPDATE с SELECT SUM из другой таблицы

Есть две таблицы 'orders' (id, bank_name, order_amount) и 'balances' (bank_name, total_balance)С помощью формы данные добавляются в таблицу 'orders' и в тоже время обновляется...

363
Выводит вместо слов их код, как исправить?

Выводит вместо слов их код, как исправить?

Выводит вместо слов их кодКак это можно исправить?

360
Проблема с миграцией баз данных в Laravel

Проблема с миграцией баз данных в Laravel

при миграции базы постоянно выдает вот такую ошибку, не понимаю что нужно исправить

376