Пользовательский интерфейс гидратор свойств в Doctrine - PullRequest
0 голосов
/ 27 февраля 2019

Итак, у меня есть одна сущность со следующим отношением:

/** @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 цели.

...