我试图执行这段代码没有结果:
$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”,但我不喜欢那个解决方案,所以仍然希望有人能找到更好的解决方案。