【问题标题】:Doctrine subqueries in SELECTSELECT 中的教义子查询
【发布时间】:2014-07-19 16:18:21
【问题描述】:
SELECT u FROM AcmeBundle:Users u

上面的语句返回用户表中的所有记录。如果我想添加其他内容,例如:

SELECT u, (
   SELECT s.name
   FROM AcmeBundle:Shop s
   ) AS shop_name
FROM AcmeBundle:Users u

执行第二个查询会引发错误,即带有键“u,shop_name”的数组的 userId 不存在。怎么了?

【问题讨论】:

  • 这不是一个有效的 Doctrine 查询。如果您能说出您想要实现的目标,那将会很有帮助。
  • 据我所知,这是 symfony 2 中有效的 DQL 查询。我只是想从 users 表中恢复所有内容,并从 shop 表中恢复一列 - 就像在第二个查询中一样。
  • 通常只从一个字段中获取数据是没有意义的。 Doctrine 主要设计用于返回实体集合。您可以返回标量值,但不能返回标量和实体的混合。在任何情况下,您都需要加入这两个实体。两张表是什么关系?
  • 一对多。我实际上需要这个来对结果进行分页(knplabs bundle)。它仅在我将整个对象传递给查询时才有效。

标签: php symfony doctrine-orm


【解决方案1】:

那么你可能想要类似的东西

SELECT u, s FROM AcmeBundle:Users u JOIN u.shop s

其中shopUser 实体中引用Shop 实体的属性的名称。

当您拥有User 实体时,您可以访问商店的名称

$user->getShop()->getName()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    相关资源
    最近更新 更多