我正在尝试使用 Doctrine2 v. 2.1.7 在 Symfony2 中执行此操作:
$query = $this->em->createQuery(
"SELECT a
FROM ".$repo." a
WHERE a.type_id = :typeid
AND a.scenario = :scen
AND a.contact_id = :cid
AND a.row_type LIKE :rwtp
ORDER BY SUBSTRING(a.row_type, 4, 1) "
)->setParameters(
array(
'typeid' =>$sesData['type_id'],
'scen' =>$sesData['scenario'],
'cid' =>$sesData['contact_id'],
'rwtp' =>'%.'.$whereVal.'%'
)
);
$customValues = $query->getResult();
Doctrine 2 在 ORDER BY 子句上失败了,因为它不喜欢其中的任何内容,除了列名和它出现的排序方向。
我查看了使用本机查询的文档,但这不起作用,因为此查询用于从多个表中提取数据(它位于我们使用的全局方法中)所以我不能做映射的东西,因为除了上面的 where 子句,其余的列名因表而异。
我认为为了实现这一目标,我需要一个真正的原生查询,它可以像所有其他非原生的 DQL 查询一样自动进行映射(水合?)。但那部分让我受阻。
我可以尝试什么来使它正常工作?