В общем есть сущность, в ней объект-коллекция с кастомным типом. Проблема в том, что при апдейте, не срабатывает 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, то все работает. Есть мысли как это порешать?