0

我正在对有很多记录的几个表进行查询。在一个特定的关系中,关系是 m:n,并且生成的查询加入了适当的表。问题是生成的查询非常慢。我可以通过取出 JOIN 并将其放入一个子查询中来重写它,这可以解决问题,但我不确定如何将它添加到我创建查询的存储库中。基本上我想要的是仍然使用 createQuery() 因为它做了很多检查但只优化了它的一小部分。

当前的实现是否有可能,还是我唯一的选择是从头开始编写整个查询?

4

1 回答 1

0

只需编写一个经过优化的手动查询:

$query = $this->createquery();
$query->getQuerySettings()->setRespectStoragePage(FALSE);
$query->statement('your query'); 
return $query->execute(TRUE);

只要查询仍然从属于存储库(和模型的子项)的表中返回记录,Extbase 仍然会执行您需要的映射,以便对对象、其子项及其属性具有 Fluid 访问权限。

于 2014-11-25T18:08:27.133 回答