Doctrine2 INDEX按数组格式

时间:2015-06-04 07:10:29

标签: doctrine-orm

我正在尝试使用doctrine 2获取数据,以便数组结果在数组的索引中具有id,而另一列作为该索引的值。

The format I am trying to get is :

    [country_id] = country

我不确定这是否可能。

$dql = "SELECT c.country FROM User\Entity\Country c INDEX BY c.country_id";
        $dq = $em->createQuery($dql);
        $countries = $dq->getResult(Query::HYDRATE_ARRAY);        
        $em->clear();

当前结果:

  

[0] =>排列       (           [country] =>阿富汗       )

     

[1] =>排列       (           [country] =>奥兰群岛       )

     

[2] =>排列       (           [country] =>阿尔巴尼亚       )

必填结果:

  

[0] =>阿富汗

     

[1] =>奥兰群岛

     

[2] =>阿尔巴尼亚

1 个答案:

答案 0 :(得分:0)

我不知道怎么做你自己的方式,我知道怎么做,因为我习惯了:

$conn = $this->getEntityManager()->getConnection();
$sql = "SELECT c.country FROM Country c;";
$query = $conn->prepare($sql);
$query->execute();
$result = $query->fetchAll(\PDO::FETCH_COLUMN);

结果应该是单个数组,而数组内部没有数组,因为fetch_column只返回列的值,而不是带索引的数组。

编辑:

要保持索引,您必须创建一个自定义保水器:

protected function _hydrateAll()
    {
        return $this->_stmt->fetchAll(PDO::FETCH_COLUMN);
    }

这样你就可以保持索引并同时使用FETCH_COLUMN。

我只为该功能提供代码,因为下面的链接为您提供所需的全部内容,我更改的部分是FETCH_COLUMN,这一切都应该是正确的。

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#custom-hydration-modes