按字符串的长度排序

Mic*_*ick 2 doctrine-orm

有没有办法按Title字段中包含的字符串的长度来命令此查询?

    $query = $this->getEntityManager()
        ->createQuery('
    SELECT b FROM AcmeTestBundle:Blog b
    WHERE b.Title LIKE :title'
    )->setParameter('title','%'.$title.'%');
Run Code Online (Sandbox Code Playgroud)

ORDER BY b.Title.length() 似乎不起作用.

Naz*_*zin 5

是的,试试吧:

$query = $this->getEntityManager()->createQuery('SELECT LENGTH(b.Title) l, b FROM AcmeTestBundle:Blog b WHERE b.Title LIKE :title ORDER BY l')->setParameter('title','%'.$title.'%');
Run Code Online (Sandbox Code Playgroud)

  • @Patt确实如此.但您可能需要升级到Doctrine 2.2+并稍微更改一下查询:LENGTH(b.Title)AS HIDDEN l.否则你需要清理结果. (3认同)