dan*_*rvt 3 php symfony doctrine-orm
每次我想将它添加到关系中时,我发现必须从数据库中通过id获取对象非常烦人.有没有办法通过id向对象添加对象而不是添加整个对象?
这是我的实际代码:
...
$person = $em->getRepository("Person")->findOneById($id);
$me->getPersons()->add($person);
...
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
...
$me->getPersons()->add($id);
...
Run Code Online (Sandbox Code Playgroud)
然后我会保存一次数据库之旅!我更喜欢哪个!可能吗?
你不必这样做.您可以像这样获取引用对象:
$person = $em->getReference("Person", $id);
$me->getPersons()->add($person);
Run Code Online (Sandbox Code Playgroud)
Doctrine不会进行查询,Person而是为具有该id的人返回一个引用代理对象.但是,如果你这样做:
$person = $em->getReference("Person", $id); // 0 queries
$person->getId(); // Still 0 queries
$person->getSomeField(); // query fired
Run Code Online (Sandbox Code Playgroud)
如果您尝试获取必须从数据库中获取的某个字段,则Doctrine将触发延迟加载.
请参阅docs EntityManager :: getReference方法