如何根据Doctrine中的条件订购结果?

时间:2015-11-01 23:24:43

标签: php mysql doctrine-orm

如何使用Doctrine查询生成器订购结果,以便首先匹配第一个条件的结果,然后是第二个条件的结果(并且所有结果应该匹配第三个条件)?

以下是查询示例:

$QB->select('k', 'k.word')
        ->from($repository, 'k')
        ->where('k.word LIKE :strict')
        ->orWhere('k.word LIKE '.':loose')       
        ->andWhere('k.status=1')
        ->setMaxResults(5)
        ->setParameter('strict', $query.'%')
        ->setParameter('loose', '%'.$query.'%');

我尝试使用orderBy(),但它没有成功 - 不知道可能是什么语法......

更新。示例数据和结果列表: 我们假设我有一个数据列表:

  • Word: Car ,状态: 1
  • Word: Carwash ,状态: 1
  • Word:电动车,状态: 1
  • Word:制图,状态: 1
  • Word: Cabriolet ,状态: 0

搜索查询" ca"

我希望查询排序并首先显示这些结果:

  • Word: Car ,状态: 1
  • Word: Carwash ,状态: 1
  • Word:制图,状态: 1

然后这个结果:

  • Word:电动车,状态: 1

并过滤掉这一个,因为状态为 0

  • Word: Cabriolet ,状态: 0

1 个答案:

答案 0 :(得分:0)

你试过这个吗?

$QB->select('k', 'k.word')
        ->from($repository, 'k')
        ->where('k.word LIKE :strict')
        ->orWhere('k.word LIKE '.':loose')       
        ->andWhere('k.status=1')
        ->setMaxResults(5)
        ->setParameter('strict', $query.'%')
        ->setParameter('loose', '%'.$query.'%')
        ->orderBy('k.word', 'ASC');