【问题标题】:How can I order results by conditions in Doctrine?如何按 Doctrine 中的条件排序结果?
【发布时间】:2015-11-01 23:24:42
【问题描述】:

如何使用 Doctrine Query Builder 对结果进行排序,以便匹配第一个条件的结果首先出现,然后是第二个条件的结果(并且所有结果都应该匹配第三个条件)?

这是一个查询示例:

$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(),但没有成功 - 不知道语法是什么......

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

  • 字:汽车,状态:1
  • 字:洗车,状态:1
  • 字:电动车,状态:1
  • 字:制图,状态:1
  • 字:敞篷车,状态:0

搜索查询是“ca”

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

  • 字:汽车,状态:1
  • 字:洗车,状态:1
  • 字:制图,状态:1

那么这个结果:

  • 字:电动车,状态:1

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

  • 字:敞篷车,状态:0

【问题讨论】:

  • 你用的是orderBy还是OrderBy?
  • 对不起,我的意思是orderBy - 更正了原帖
  • 您能否提供一个示例条目列表以及您希望它们如何排序?
  • 我在帖子中添加了一个示例

标签: php mysql doctrine-orm


【解决方案1】:

你试过了吗?

$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');

【讨论】:

  • 是的,只是按字母数字顺序(0-9,a-z)对记录进行排序
猜你喜欢
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
相关资源
最近更新 更多