如何始终首先检索记录,然后使用 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();
我是 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();