如何在Symfony2 Doctrine2中将varchar命令为int?

时间:2014-04-10 16:07:56

标签: php mysql symfony doctrine-orm

我有以下代码:

$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列类型?

1 个答案:

答案 0 :(得分:8)

解决此问题的最佳方法是使用select表达式添加orderBy作为隐藏列。我的意思是:

$entity = $em->getRepository('MyBundle:MyEntity')
    ->createQueryBuilder('q')
    ->addSelect('ABS(q.varcharCol) AS HIDDEN foo')
    ->...
    ->orderBy('foo')
    ->getQuery()
    ->getResult();

感谢@Qoop和@eggyal