Symfony 2添加行而没有相关的行查找

时间:2013-12-03 20:01:56

标签: symfony doctrine-orm symfony-2.3

我试图添加一行,它附有一个相关的(一对一)行,而不必进行查找。例如:

$row = new Product();
$row->setField1('123');
$row->setRelatedFieldId(3);

我现在要做的是:

$related_record = $repo->find(3);
$row->setRelatedName($related_record);

但是symfony在那里进行了第二次搜索。这是查找的强大功能,能够链接不同的表,但我已经拥有相关行的ID,而不是在进行插入之前不必对其进行另一个查询。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

替换:

$related_record = $repo->find(3);

使用:

$related_record = $em->getReference('ClassName',123);

它为您提供了相关对象的引用,然后您可以使用它来设置关系。对象本身不会被加载。由您来确保对象123存在。

我应该指出,通过缓冲和缓存,使用引用可能不会节省太多。

答案 1 :(得分:0)

请阅读http://www.doctrine-project.org/jira/browse/DDC-357 看起来这是使用one2many关系插入的one2one

的预期行为和最简单的方法