
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Use OrderBy for Multiple Columns in Laravel
The ORDERBY clause is used to arrange the columns in a table in ascending or descending order. By default it sorts the columns in ascending order, if you need to sort in descending order you should use DSC along with the clause.
Syntax
Following is the syntax of this statement ?
SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;
Assume we have created a table named Students in MySQL database using the following query ?
CREATE TABLE students( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(10) NOT NULL, email VARCHAR(15) NOT NULL, created_at VARCHAR(27) NOT NULL, updated_at VARCHAR(27) NOT NULL, address VARCHAR(3) NOT NULL );
And populated it using the following INSERT statements ?
INSERT INTO students(id,name,email,created_at,updated_at,address,age) VALUES (1,'Siya Khan','[email protected]','2022-05-01T13:45:55.000000Z','2022-05-01T13:45:55.000000Z','Xyz', 20); INSERT INTO students(id,name,email,created_at,updated_at,address,age) VALUES (2,'Rehan Khan','[email protected]','2022-05-01T13:49:50.000000Z','2022-05-01T13:49:50.000000Z','Xyz', 18); INSERT INTO students(id,name,email,address,age) VALUES (3,'Rehan Khan','[email protected]','testing',20); INSERT INTO students(id,name,email,address,age) VALUES (4,'Rehan','[email protected]','abcd',15); INSERT INTO students(id,name,email,address,age) VALUES (5,'Nidhi Agarwal','[email protected]','abcd',20); INSERT INTO students(id,name,email,address,age) VALUES (6,'Ashvik Khanna','[email protected]','oooo',16); INSERT INTO students(id,name,email,address,age) VALUES (7,'Viraj Desai','[email protected]','test',18); INSERT INTO students(id,name,email,address,age) VALUES (8,'Priya Singh','[email protected]','test123',20);
If you retrieve the created table, it will look like this ?
+----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ | id | name | email | created_at | updated_at |address | age | +----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ | 1 | Siya Khan | [email protected] | 2022-05-01T13:45:55.000000Z | 2022-05-01T13:45:55.000000Z | Xyz | 20 | | 2 | Rehan Khan | [email protected] | 2022-05-01T13:49:50.000000Z | 2022-05-01T13:49:50.000000Z | Xyz | 18 | | 3 | Rehan Khan | [email protected] | NULL | NULL | testing | 20 | | 4 | Rehan | [email protected] | NULL | NULL | abcd | 15 | | 5 | Nidhi Agarwal | [email protected] | NULL | NULL | abcd | 20 | | 6 | Ashvik Khanna | [email protected] | NULL | NULL | oooo | 16 | | 7 | Viraj Desai | [email protected] | NULL | NULL | test | 18 | | 8 | Priya Singh | [email protected] | NULL | NULL | test123 | 20 | +----+---------------+------------------+-----------------------------+-----------------------------+---------+------+ 8 rows in set (0.00 sec)
In the article we are going to make use of eloquent model student so to use orderBy the syntax will be ?
Student::orderBy();
Following is the MySQL query to invoke order by on multiple columns ?
SELECT * FROM 'students' ORDER BY fieldname ASC/DESC
Example 1
Following program retrieves multiple columns of a table using the ORDERBY clause ?
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; class StudentController extends Controller { public function index() { echo $student = Student::orderBy('name', 'DESC') ->orderBy('email', 'ASC') ->get(); } }
Output
The output for above one is ?
[{"id":1,"name":"Siya Khan","email":"[email protected]","address":"Xyz"}, {"id":2,"name":"Rehan Khan","email":"[email protected]","address":"Xyz"}]
Query used
The select query for above one is ?
SELECT * FROM 'students' ORDER BY 'name' DESC, 'email' ASC
If you execute above query in MySQL you get below output
mysql> SELECT * FROM students ORDER BY 'name' DESC, 'email' ASC; +----+------------+-----------------+-----------------------------+-----------------------------+---------+ | id | name | email | created_at | updated_at | address | +----+------------+-----------------+-----------------------------+-----------------------------+---------+ | 1 | Siya Khan | [email protected] | 2022-05-01T13:45:55.000000Z | 2022-05-01T13:45:55.000000Z | Xyz | | 2 | Rehan Khan | [email protected] | 2022-05-01T13:49:50.000000Z | 2022-05-01T13:49:50.000000Z | Xyz | +----+------------+-----------------+-----------------------------+-----------------------------+---------+ 2 rows in set (0.00 sec)
Example 2
Following is another example demonstrating the use of ORDERBY clause in Laravel. Here, the orderBy given on name and email is ASC ?
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; class StudentController extends Controller { public function index() { echo $student = Student::orderBy('name', 'ASC') ->orderBy('email', 'ASC') ->get(); } }
Output
The output for above is ?
[{"id":2,"name":"Rehan Khan","email":"[email protected]","created_at":"2022-05-01T13:49:50.000000Z","updated_at":"2022-05-01T13:49:50.000000Z","address":"Xyz"},{"id":1,"name":"Siya Khan","email":"[email protected]","created_at":"2022-05-01T13:45:55.000000Z","updated_at":"2022-05-01T13:45:55.000000Z","address":"Xyz"}]
Query used
The query for above case is ?
SELECT * FROM 'students' ORDER BY 'name' ASC, 'email' ASC;
The output when executed in MySQL is as follows
mysql> SELECT * FROM students ORDER BY name ASC, email ASC; +----+------------+-----------------+-----------------------------+-----------------------------+---------+ | id | name | email | created_at | updated_at | address | +----+------------+-----------------+-----------------------------+-----------------------------+---------+ | 2 | Rehan Khan | [email protected] | 2022-05-01T13:49:50.000000Z | 2022-05-01T13:49:50.000000Z | Xyz | | 1 | Siya Khan | [email protected] | 2022-05-01T13:45:55.000000Z | 2022-05-01T13:45:55.000000Z | Xyz | +----+------------+-----------------+-----------------------------+-----------------------------+---------+ 2 rows in set (0.00 sec)