【问题标题】:How does Laravel's ORM specify the sorted values for the data?Laravel 的 ORM 是如何指定数据的排序值的?
【发布时间】:2019-05-29 23:40:12
【问题描述】:

例如: 表中有一个字段叫name, Name 包含一些用户名,例如:

| name |
---------
| Asal |
| Codaya |
| Ostily |
| Queen |
| Qta |
| Zoo |

你想实现什么,比如我现在传一个值,比如传Q,那么返回的数据,也就是Q的第一个字母都在前面,像这样:

| name |
-------------
| Queen |
| Qta |
| Asal |
| Codaya |
| Ostily |
| Zoo |

如果你传入一个Z,它会变成这样:

| name |
------------
| Zoo |
| Asal |
| Codaya |
| Ostily |
| Queen |
| Qta |

这个需求在mysql中是如何实现的?

【问题讨论】:

  • 你想达到的按字符/字符串排序结果的目的是什么?如果它只是为了在 HTML 输入中自动完成用户输入,那么我建议使用 jqueryui 自动完成,将您的数据传递给它,它会完成这项工作。 jqueryui.com/autocomplete
  • 不仅仅是前端排序,我需要在后端处理,因为翻页的功能很多,因为我传给前端的数据只有20条每次我翻页,所以我需要这个功能。

标签: mysql laravel-5 eloquent


【解决方案1】:

我认为你最好的选择是在 SQL 中:

SELECT 
    name
FROM
    user
ORDER BY 
CASE
    WHEN name LIKE 'E%' THEN 1
    ELSE 2
END

如果您使用 Doctrine 作为 ORM,我相信 CASEORDER BY(在 DQL 中)本身不支持,所以我猜您将不得不使用原始 SQL。

【讨论】:

    猜你喜欢
    • 2014-12-20
    • 2015-02-09
    • 2017-10-02
    • 2013-07-07
    • 2017-07-14
    • 2016-07-05
    • 1970-01-01
    • 2013-09-26
    • 2014-08-16
    相关资源
    最近更新 更多