如何始终首先检索记录,然后使用 orderby 检索其余记录?

how to retrieve a record always first and rest of the records using orderby?

我是 Laravel 的新手。 我正在尝试从数据库中检索一些记录。我需要其中一行始终排在第一位,并按字母顺序排列 order.Like this :

CategoryID     Category
---------------------------
54            New Products
1             Amino Acids
3             b---
34            c----
4             d---

我应该如何重写我的代码来实现这个?

$db_categories = Category::get();

提前致谢。

我不知道 Laravel,但是 - 当您使用 SQL-ish 标签标记问题时,您可以:使用 CASE(或类似函数,在您使用的数据库中可用; 例如 Oracle 中的 DECODE)。例如:

  • 我要DEPTNO = 30(部门编号)先
  • 其余应按DNAME(部门名称)字母顺序排序

SQL> select * from dept
  2  order by case when deptno = 30 then 1
  3                else 2
  4           end,
  5           dname;

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO
        10 ACCOUNTING     NEW YORK
        40 OPERATIONS     BOSTON
        20 RESEARCH       DALLAS

SQL>

希望您能够在您的案例中使用类似的东西。

你可以使用这个:

Category::orderBy(DB::raw("IF(category = 'New Products', 0, 1), Category"))->get();