从 Doctrine Query 到 Simfony2 实体字段类型的 QueryBuilder



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

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

有没有办法自动从查询对象转换为查询构建器对象?

来自 Symfony2 文档:

query_builder- 类型:DoctrineORMQueryBuilderClosure<---

如果指定,则用于查询选项的子集(及其 order)应用于该字段。此选项的值可以 要么是QueryBuilder对象,要么是Closure。如果使用Closure,则 应该采用单个参数,EntityRepository这是 实体。

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

介意试一试吗? :)

更新

。对不起,让你久等了...

看来这样是不可能的。相反,您必须使用表单类型并手动choice馈送实体对象(或对象存储库)。

我在这里做了一些简化的例子:http://ideone.com/LHdi2E

希望这有帮助...

相关内容

  • 没有找到相关文章

最新更新