Yer*_*oon 17 php doctrine dql doctrine-orm
在我的Repository类中,我使用以下代码进行查询:
$query = $this->getEntityManager()->createQuery("
SELECT s.term, COUNT(s.term) AS freq
FROM App\Entities\SearchTerm s
GROUP BY s.term
ORDER BY s.term ASC
");
$result = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
array (size=4)
0 =>
array (size=2)
'term' => string '' (length=0)
'freq' => string '1' (length=1)
1 =>
array (size=2)
'term' => string 'foo' (length=3)
'freq' => string '1' (length=1)
2 =>
array (size=2)
'term' => string 'bar' (length=3)
'freq' => string '2' (length=1)
3 =>
array (size=2)
'term' => string 'baz' (length=3)
'freq' => string '2' (length=1)
Run Code Online (Sandbox Code Playgroud)
但我宁愿有一个关联数组作为结果:
array (size=4)
'' => string '1' (length=1)
'foo' => string '1' (length=1)
'bar' => string '2' (length=1)
'baz' => string '2' (length=1)
Run Code Online (Sandbox Code Playgroud)
这是否可能没有额外的for循环来构建所需的数组?
Axi*_*puy 20
我知道它已经老了,但今天我必须做的几乎一样,我的解决方案没有定制的保湿剂
喜欢
$result = $query->getQuery()->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)
要么
$result = $query->getQuery()->getResult(2);
Run Code Online (Sandbox Code Playgroud)
如
$resultNeeded = array_map(function($value) { return $value['freq']; }, $result);
Run Code Online (Sandbox Code Playgroud)
Wil*_*ilt 10
如果需要数组,可以使用该getArrayResult方法.
获取查询的结果数组.
执行别名(null,HYDRATE_ARRAY).
$result = $query->getQuery()->getArrayResult();
Run Code Online (Sandbox Code Playgroud)
因此,使用此方法将获得与使用常量完全相同的结果HYDRATE_ARRAY.
小智 5
使用INDEX BY:
$em = $this->getEntityManager();
$query = $em->createQuery('SELECT c FROM SomeBundle:Configuration c INDEX BY c.name');
$query->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
Run Code Online (Sandbox Code Playgroud)
我在这里看到它,它工作正常:https://coderwall.com/p/crz4dq/defining-a-column-to-be-the-key-of-the-result-Hydred-as-array-in-doctrine -2
| 归档时间: |
|
| 查看次数: |
42644 次 |
| 最近记录: |