我是Laravel的新手。 我正在尝试从数据库中检索一些记录。我需要其中一行始终位于第一位,并按字母顺序排列。就像这样:
CategoryID Category
---------------------------
54 New Products
1 Amino Acids
3 b---
34 c----
4 d---
我应该如何重写代码来实现这一目标?
$db_categories = Category::get();
谢谢。
答案 0 :(得分:1)
我不了解Laravel,但是-当您使用SQL-ish标签标记问题时,您可以使用CASE(或类似的功能,在您使用的数据库中可用;例如Oracle中的DECODE)。例如:
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>
希望您可以在这种情况下使用类似的东西。
答案 1 :(得分:1)
您可以使用此:
Category::orderBy(DB::raw("IF(category = 'New Products', 0, 1), Category"))->get();