4

我在Symfony2.1表单中使用实体字段类型。在这里,我将使用参数仅返回与长复杂查询匹配的实体(参见官方文档中的示例)。query_builder

显然,query_builder实体字段类型的参数接受 Doctrine QueryBuilder对象。另一方面,我有大型实体存储库,其中包含由EntityManagercreateQuery()函数获得的复杂 DQL 查询,该函数返回一个 Doctrine Query对象。所以,我不能直接在实体字段类型中使用所有这些查询。此外,重写所有查询以使用 QueryBuilder 将是无稽之谈。

有没有这样一种方法可以自动从Query对象转换为QueryBuilder对象?

4

1 回答 1

1

来自 Symfony2 文档:

query_builder - 类型:Doctrine\ORM\QueryBuilderClosure<---

如果指定,则用于查询应用于该字段的选项子集(及其顺序)。此选项的值可以是QueryBuilder对象或Closure. 如果使用 a Closure,它应该采用单个参数,即EntityRepository实体的 the。

现在,我没有时间尝试一个例子,但在我看来,如果你使用Closure你可以返回ArrayCollection(或至少array)目标实体对象。您Closure将对象EntityRepository作为参数,因此无需重写所有这些内容。

介意试一试吗?:)

更新

……抱歉让你久等了……

这种方式似乎是不可能的。相反,您必须choice手动使用表单类型和提要实体对象(或对象存储库)。

I've made some simplified example here: http://ideone.com/LHdi2E

Hope this helps...

于 2012-11-08T09:04:01.830 回答