symfony - Simfony2 实体字段类型中从 Doctrine Query 到 QueryBuilder

标签 symfony doctrine-orm dql query-builder

我正在使用 Symfony2.1 形式的实体字段类型。在这里,我将使用 query_builder param 仅返回与长复杂查询匹配的实体(参见 official docs 中的示例)。

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

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

最佳答案

来自 Symfony2 文档:

query_builder - type: Doctrine\ORM\QueryBuilder or a Closure <---

If specified, this is used to query the subset of options (and their order) that should be used for the field. The value of this option can either be a QueryBuilder object or a Closure. If using a Closure, it should take a single argument, which is the EntityRepository of the entity.



现在,我没有时间尝试一个例子,但在我看来,如果你使用 Closure您可以返回 ArrayCollection (或至少 array )的目标实体对象。您的 Closure获取 EntityRepository 的对象作为一个论点,所以没有必要重写所有这些东西。

介意试一试吗? :)

更新

……抱歉让您久等了……

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

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

希望这可以帮助...

关于symfony - Simfony2 实体字段类型中从 Doctrine Query 到 QueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13285281/

相关文章:

php - 如何使用 Doctrine 和 Symfony2 调试失败的数据库写入?

mysql - 将 MySQL 查询转换为 DQL

java - 我们可以以编程方式动态更改composer中的Dfc.properties文件吗

php - Symfony "Welcome page"似乎不完整

symfony - 错误 : Class . ..\Entity\.. 没有名为的关联

Symfony CSRF 域和子域

php - 如何获取doctrine的原始sql

mongodb - 如何通过 Doctrine ODM with MongoDB 中的引用文档查找?

javascript - PHP Symfony2 的动态内容 Bootstrap 模式对话框

php - Symfony2 中 $em->clear() 的未定义索引错误