Doctrine - 查询返回嵌套数组而不是一个

时间:2014-07-02 11:01:01

标签: php sql symfony doctrine-orm dql

我正在进行此查询

public function getRecommendedVendors($user)
{
    $q = $this->em->createQuery(
        "
          select cat.id
          from Zgh\FEBundle\Entity\Category cat
          inner join cat.users u
          where u = :user
        "
    );

    $q->setParameters(["user" => $user]);

    var_dump($q->execute());
    die;
    return $q->execute();
}

执行var_dump()返回:

array (size=2)
  0 => 
    array (size=1)
      'id' => string '1' (length=1)
  1 => 
    array (size=1)
      'id' => string '10' (length=2)

我希望它返回,因为我使用IN语句中的结果:

array (size=2)
  0 =>
    'id' => string '1' (length=1)
  1 => 
    'id' => string '10' (length=2)

1 个答案:

答案 0 :(得分:0)

您遇到的是默认查询行为:第一个数组“级别”是行,第二个“级别”是列。当然,你只有一列,所以看起来有点奇怪。

而不是execute(),您应该使用getScalarResult()。要了解有关详情,请阅读http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#query-result-formats