如何从学说查询中的两个字段返回关联数组?

时间:2015-12-02 14:01:42

标签: php doctrine-orm

我的数据库表看起来像这样;

id   name
---------
1    Open
2    On Hold
3    Closed

我想要的结果是像这样的关联数组;

数组(1 =>'打开',2 =>'暂停',3 =>'已关闭');

我找不到任何简单的方法从doctine返回这些结果,所以我正在使用这段代码;

$query = $this->em->createQuery("SELECT s FROM Project\Entity\ProjectStatus s");
$statuses = $query->getResult();
$result = array();
foreach($statuses as $status)
{
    $result[$status->getId()] = $status->getName();
}
return $result;

这感觉很长。有更简单的方法吗? 我已经尝试过Query :: HYDRATE_ARRAY,但它仍然包含结果数组中的字段名称。我只是不喜欢这些价值观。

1 个答案:

答案 0 :(得分:0)

已回答 before
从PHP 5.5开始,您可以使用array_column来解决此问题

$queryBuilder = $this->createQueryBuilder('s')
    ->select('s.name');
$query = $queryBuilder->getQuery();

$query = $this->em->createQuery("SELECT s.name FROM Project\Entity\ProjectStatus s");

然后

$result = $query->getArrayResult();
$names = array_column($result, 'name');

使用s.name,如果您只需要名称,则无需获取整个ProjectStatus