将 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 ? :)
请告诉我它是否能胜任这项工作?我没有时间测试它
我正在使用 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 ? :)
请告诉我它是否能胜任这项工作?我没有时间测试它