Итак, у меня есть одна сущность со следующим отношением:
/** @var GuideInterface */
private $guide;
Интерфейс:
interface GuideInterface
{
public function getId();
// other methods skipped for brevity
}
Это отношение хранится в базе данных внутри столбца json
следующим образом:
public function convertToDatabaseValue($value)
{
if (!$value instanceof GuideInterface) {
throw new ...
}
return json_encode([
'class' => get_class($value),
'id' => $value->getId(),
]);
}
Теперь я не знаю, как правильно воссоздать этот объект, чтобы при вызове Entity::getGuide
получить взамен связанную сущность.
Я работаю с Symfony 4.2,Я думал о postLoad
слушателе, выбирающем из диспетчера объектов, затем вводящем сущность туда, но, может быть, есть какой-то лучший, умный способ сделать это?
На мой взгляд, лучшим способом будет convertToPHPValue
метод класса отображения, но, к сожалению, у меня нет доступа к диспетчеру объектов.
Мне известно о ResolveTargetEntityListener , но это должно быть динамическии я заранее не знаю FQCN цели.