3

我试图执行这段代码没有结果:

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

但是经过大量搜索后,我无法弄清楚我做错了什么,这方面的文档真的很差,而且我遇到的例子都和我的一样,并且信任他们的作者。

我提到的链接:

在问题的最后

主题不一样,但他正在使用类似的查询

编辑:var_dump($query);我看到它的$query结构很好,但我发现了那些行:

public 'scalarMappings' => 
    array (size=1)
      'count' => string 'count' (length=5)
  public 'typeMappings' => 
    array (size=1)
      'count' => string 'string' (length=6)

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

编辑2:目前我已经用声明做了一个“hack”,但我不喜欢那个解决方案,所以仍然希望有人能找到更好的解决方案。

4

1 回答 1

0

$query->getSingleScalarResult()

于 2013-05-28T10:35:48.657 回答