如何使用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()
,但它没有成功 - 不知道可能是什么语法......
更新。示例数据和结果列表: 我们假设我有一个数据列表:
搜索查询" ca" 。
我希望查询排序并首先显示这些结果:
然后这个结果:
并过滤掉这一个,因为状态为 0 :
答案 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');