Native Query不会保留标量结果

时间:2013-05-28 09:03:06

标签: php symfony doctrine-orm

我试图在没有结果的情况下执行这段代码:

$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();

但是在经过大量搜索之后,我无法弄清楚我做错了什么,关于这个问题的文档真的很糟糕,我收到的例子与我的相同,并且信任他们的作者。

我提到的链接:

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)

据我了解,它告诉count将存储在一个字符串中吗?而它是一个整数...这是正常行为吗?

编辑2:目前我已经使用statement进行了“黑客攻击”,但我不喜欢这种解决方案,所以仍希望有人能找到更好的解决方案。

1 个答案:

答案 0 :(得分:0)

$查询 - > getSingleScalarResult()