我的数据库表看起来像这样;
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,但它仍然包含结果数组中的字段名称。我只是不喜欢这些价值观。
答案 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
。