每次我想将它添加到关系中时,我发现必须通过数据库中的id获取对象非常烦人。有没有办法通过id将对象添加到关系中而不是添加整个对象?
这是我的实际代码:
...
$person = $em->getRepository("Person")->findOneById($id);
$me->getPersons()->add($person);
...
我想有这样的事情:
...
$me->getPersons()->add($id);
...
然后我会保存一次数据库之旅!我更喜欢哪个!有可能吗?
答案 0 :(得分:6)
你实际上不必这样做。您可以像这样获得参考对象:
$person = $em->getReference("Person", $id);
$me->getPersons()->add($person);
Doctrine不会对Person
进行查询,而是会为具有该ID的人返回引用代理对象。但是,如果你这样做:
$person = $em->getReference("Person", $id); // 0 queries
$person->getId(); // Still 0 queries
$person->getSomeField(); // query fired
如果您尝试获取必须从数据库中获取的某个字段,则Doctrine将触发延迟加载。