我有以下代码:
$entity = $em->getRepository('MyBundle:MyEntity')
->createQueryBuilder('q')
->...
->orderBy('q.varcharCol')
->getQuery()
->getResult();
varcharProp
是一个包含以下值的varchar列:10,10a,101,20,300,20b,21,200。我想通过varcharProp对我的实体进行排序,但是将其转换为整数,我必须这样做在查询中排序,因为我限制了结果。
在Doctrine2中可以做这样的事吗?
entity->orderBy('ABS(q.varcharCol)')
或更改varcharProp
列类型?
答案 0 :(得分:8)
解决此问题的最佳方法是使用select
表达式添加orderBy
作为隐藏列。我的意思是:
$entity = $em->getRepository('MyBundle:MyEntity')
->createQueryBuilder('q')
->addSelect('ABS(q.varcharCol) AS HIDDEN foo')
->...
->orderBy('foo')
->getQuery()
->getResult();
感谢@Qoop和@eggyal