我正在尝试在querybuilder之后执行nativequeryvie修改sql查询。所以我通过
$queryBuilder->getQuery()->getSQL()
我的问题是这样的
SELECT p0_.id AS id_0 FROM ptable p0_ WHERE p0_.code = ? AND p0_.item_id IN (?)
但是
$parameters = $queryBuilder->getQuery()->getParameters()
按添加参数的顺序返回参数,但不返回它们在sql查询中的显示方式。是否存在按正确顺序获取参数的方法?
参数大致如下 ['code', [1,2,3]]
或者 [[1,2,3], 'code']
-订单依赖于添加订单。
***更新。我想做的
$newParameters = [];
foreach ($queryBuilder->getQuery()->getParameters() as $parameter) {
$newParameters[count($newParameters) + 1] = $parameter->getValue();
}
$nativeQuery =
$this->_em
->createNativeQuery('SELECT count(*) countItem FROM ('.$queryBuilder->getQuery()->getSQL().') tmp', $rsm)
->setParameters($newParameters);// params order does matter
1条答案
按热度按时间ctehm74n1#
当我看到你的问题,我做了一个测试用例,做了很多次你想做的事情。但是,我没能像你一样随机订购。
你是在使用任何框架,还是在使用开箱即用的原则?下面的示例使用symfony 2.8中的条令。
使用createquerybuilder()
这个
print_r($qb->getSQL());
以及print_r($qb->getParameters());
给我下面的结果,它一直是一致的,使用createnativequery()
上面的顺序将始终是您使用
setParameter()
.我希望这有帮助。谢谢。