我试图在没有结果的情况下执行这段代码:
$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();
但是在经过大量搜索之后,我无法弄清楚我做错了什么,关于这个问题的文档真的很糟糕,我收到的例子与我的相同,并且信任他们的作者。
我提到的链接:
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进行了“黑客攻击”,但我不喜欢这种解决方案,所以仍希望有人能找到更好的解决方案。
答案 0 :(得分:0)
$查询 - > getSingleScalarResult()