如何在教义中进行子查询并将结果水合到对象中?

Posted

技术标签:

【中文标题】如何在教义中进行子查询并将结果水合到对象中?【英文标题】:How to do a subquery in doctrine and get the result hydrated to an object? 【发布时间】:2011-05-08 13:22:42 【问题描述】:

我想在教义上做一个有点复杂的查询,即一个带有 group_concat 的子查询的内连接。

查看普通 SQL 中的查询:

SELECT *
FROM kinderen k
INNER JOIN
(
  SELECT i.kindid, GROUP_CONCAT(DISTINCT a.periode) as periodes
  FROM inschrijvingen i
  INNER JOIN activiteiten a ON i.activiteitid=a.id
  GROUP BY i.kindid
) p
ON k.kindid=p.kindid;

1) 我怎样才能在教义中做到这一点?换句话说,我怎样才能将这个常规 sql 翻译成 dql?

2) 我希望在生成的 Kinderen 对象中可以访问额外的属性(句点)。我怀疑这是教义的默认行为?

我在阅读文档和谷歌时找不到解决方案。

谢谢!

【问题讨论】:

【参考方案1】:

似乎这在 Doctrine 2 中作为“获取连接”可用,但不确定它是否存在于 1.2 中。

http://www.doctrine-project.org/projects/orm/2.0/docs/reference/dql-doctrine-query-language/en

【讨论】:

***.com/questions/3324101/… Regular vs fetch 似乎只是性能问题。我的主要问题是如何将常规 sql 翻译成 dql,我会更新我的问题。谢谢。 我明白了......我被水化位甩了。它必须是DQL吗?在这里查看我的答案:***.com/questions/2774947/using-raw-sql-with-doctrine/… ...不确定执行方法为所有东西补水提供了什么。当我偶尔需要绕过 DQL 时,我总是选择数组数据。 感谢您的链接。但是......我有几个函数处理结果并且那些期望一个对象。当然我可以重写它们,但保持它面向对象会很好。我使用 Zend + Doctrine。 您是否在此处查看过“Doctrine_Connection”选项:doctrine-project.org/projects/orm/1.2/api ...?你可能会在那里找到一些东西。 教义链接坏了。

以上是关于如何在教义中进行子查询并将结果水合到对象中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在教义中进行复杂的SQL查询

Python-Sqlalchemy-Postgres:如何将子查询结果存储在变量中并将其用于主查询

Laravel中的MySQL子查询,如何加入查询并将第二个查询的结果作为新列添加到第一个查询?

如何在 Doctrine2 的查询结果中获取 Collection

如何在 Zend 中使用表上的子查询执行查询并获取 Rowset 对象作为结果?

如何将查询结果转换为字符串并将其插入表行