Skip to main content
Tutorial Free

Did you know about orderByRaw() in Eloquent?

December 27, 2016
1 min read

Tutorial last revisioned on August 17, 2022 with Laravel 9

Let's imagine a simple situation - you need to write an Eloquent query and order the result by the difference of two columns. Or some other calculation. Time to apply a raw query! Simple orderBy:
User::where('created_at', '>', '2016-01-01')
  ->orderBy('updated_at', 'desc')
  ->get();
Now, what if we need to order by the difference between updated_at and created_at? It looks like this:
User::where('created_at', '>', '2016-01-01')
  ->orderByRaw('(updated_at - created_at) desc')
  ->get();
This orderByRaw() method, will apply order by clause without changing anything in it, so final query will be:
select * from users
  where created_at > '2016-01-01'
  order by (updated_at - created_at) desc
Hope that helps!

Enjoyed This Tutorial?

Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.

Recent Courses on Laravel Daily

Next.js Basics for Laravel Developers

11 lessons
58 min

Laravel 13 Starter Kit Teams and Customizations

10 lessons
33 min

Laravel 13 Eloquent: Expert Level

41 lessons
1 h 34 min

No comments yet…