将 deserialized/denormalized 个实体变成学说代理?

Turn deserialized/denormalized entity into doctrine proxy?

我正在使用 symfony 序列化程序将一些实体持久化到基于 json 的数据库。 当从 json 数据库中检索它们时,它们会再次反序列化。 在持久化到 json 数据库之前,并非所有字段都被序列化。

是否可以将反序列化的实体变成学说代理,以便查询它们之间的关系?

例子

App\Entity\Employer and App\Entity\Employee (Employee --ManyToOne--> Employer), Employer is not null on Employee.

关系在持久化 Employee 到 json db 之前未序列化。

$documentFromJsonDb = ...;

/** @var App\Entity\Employee */
$employee = $this->normalizer->denormalize($documentFromJsonDb, 'json');
$employee->getEmployer(); // This returns null :( not making a db call

$employee = MagicMethod($employee);
$employee->getEmployer() // This returns an instance of App\Entity\Employer :)

到目前为止,我已经查看了 Doctrine\Common\Proxy\ProxyGenerator

有没有一种简单的方法可以在没有太多开销的情况下做到这一点?

感谢阅读!

我想你想做的是merge你的解码实体能够使用学说能力?

看看 Doctrine 的文档:https://www.doctrine-project.org/projects/doctrine-orm/en/2.8/reference/working-with-objects.html#merging-entities

它会是这样的:

$documentFromJsonDb = ...;

/** @var App\Entity\Employee */
$employee = $this->normalizer->denormalize($documentFromJsonDb, 'json');
$mergedEmployee = $em->merge($employee);

$mergedEmployee->getEmployer(); // Would this work ? :)

请告诉我它是否能胜任这项工作?我没有时间测试它