nepster-web
@nepster-web

Как сохранить данные объекта-коллекции в кастомном типе doctrine2?

В общем есть сущность, в ней объект-коллекция с кастомным типом. Проблема в том, что при апдейте, не срабатывает convertToDatabaseValue. Как я понял, доктрина не понимает, что объект-коллекция изменился.

class Record
    {
    ...
        /**
         * @ORM\Column(type="ContentContext_RecordTranslationCollection")
         * @var RecordTranslationCollection
         */
        private $translations;
    
    ...
        public function __construct   ( )
        {
            $this->translations = new RecordTranslationCollection();
        }
    ....
        /**
         * @param RecordTranslation $translation
         */
        public function addTranslation(RecordTranslation $translation): void
        {
            /** @var RecordTranslation $translation */
            foreach ($this->translations as $currentTranslation) {
                if ($currentTranslation->getLocale() === $translation->getLocale()) {
                    $this->translations->removeElement($currentTranslation);
                    break;
                }
            }
            $this->translations->add($translation);
        }
    }


public function convertToDatabaseValue($collection, AbstractPlatform $platform)
    {
        // при апдейте, сюда не попадаем
    }


    public function convertToPHPValue($json, AbstractPlatform $platform)
    {
        $data = json_decode($json, true) ?? [];
        $collection = new RecordTranslationCollection();
        foreach ($data as $translate) {
            $collection->add($this->hydrator->hydrate($translate, RecordTranslation::class));
        }
        return $collection;
    }


Если как-то извращаться с clone, то все работает. Есть мысли как это порешать?
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы