2013-05-28 19 views
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:

at the end of the question

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,但我不喜歡該解決方案,所以仍希望有人能找到一個更好的解決方案。

回答

0

$查詢 - > getSingleScalarResult()

+0

已經測試,返回null ......我可能是錯的,但我認爲,鑑於的getResult()是更普遍的,如果getSingleScalarResult給出結果,的getResult()將給它也... – MisterJ