3
我嘗試沒有結果來執行這個代碼片段:原生查詢不保溼scalarResult
$sql="SELECT COUNT(*) AS count FROM People ppl WHERE ppl.email= ? AND
(ppl.cod_etb=3 OR ppl.cod_etb IS NULL)";
$rsm = new ResultSetMapping;
$rsm->addScalarResult('count','count');
$query= $this->_em->createNativeQuery($sql, $rsm);
$query->setParameter(1, $email);
var_dump($query->getResult());
我知道有與resultSetMapping一個問題,因爲這個代碼工作,並給了我正確的實體:
$sql="SELECT * FROM People ppl WHERE ppl.email= ? AND
(ppl.cod_etb=3 OR ppl.cod_etb IS NULL)";
$rsm = new ResultSetMappingBuilder($this->_em);
$rsm->addRootEntityFromClassMetadata('my\myBundle\Entity\People', 'ppl');
$query= $this->_em->createNativeQuery($sql, $rsm);
$query->setParameter(1, $email);
return $query->getOneOrNullResult();
但經過很多搜索後,我無法弄清楚自己做錯了什麼,關於這方面的文檔非常差,而且我所接受的例子都與我的相同,並且相信他們的作者。
鏈接我mentionned:
subject is not the same, but he is using a similar query which works
編輯: 隨着var_dump($query);
我看到$query
是構造良好的,但我發現這些線路:
public 'scalarMappings' =>
array (size=1)
'count' => string 'count' (length=5)
public 'typeMappings' =>
array (size=1)
'count' => string 'string' (length=6)
據我所知,它說明計數將是s在一個字符串右轉?而它是一個整數...這是一個正常的行爲?
編輯2:目前我做了一個「黑客」與statement,但我不喜歡該解決方案,所以仍希望有人能找到一個更好的解決方案。
已經測試,返回null ......我可能是錯的,但我認爲,鑑於的getResult()是更普遍的,如果getSingleScalarResult給出結果,的getResult()將給它也... – MisterJ