Laravel Order By Relation Column Example

By Hardik Savani April 16, 2024 Category : Laravel

Hello Artisan,

Now, let's see example of laravel order by relation column. you can understand a concept of laravel orderby belongsto relationship. step by step explain orderby in relation laravel. you will learn orderby relation table laravel. Let's see bellow example laravel orderby relationship column.

In this post, i will give some example of how to use orderBy with relationoship field in laravel application. you can easily use order by asc and desc with relation table column in laravel.

This example will help you with laravel 5, laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11.

So, Let's see bellow examples that will helps you.

Example 1:

Now we will use with method for order by relation column in laravel.

So, let's see bellow examples.

Laravel Orderby Belongsto Relationship ASC

$posts = Post::with(['author' => function ($q){

$q->orderBy('name');

}])

->get();

Laravel Orderby Belongsto Relationship DESC

$posts = Post::with(['author' => function ($q){

$q->orderBy('name', 'DESC');

}])

->get();

Example 2:

Now we will use collection sortBy() and sortByDesc() method for order by relation column in laravel.

So, let's see bellow examples.

Laravel Orderby Relation Column using Collection ASC

$posts = Post::get()->sortBy(function($query){

return $query->auther->name;

})

->all();

Laravel Orderby Relation Column using Collection DESC

$posts = Post::get()->sortByDesc(function($query){

return $query->auther->name;

})

->all();

Example 3:

Now we will use inner join and use order by relation column in laravel.

So, let's see bellow examples.

Laravel Orderby Relation Column using Join ASC

$posts = Post::select('*')

->join('authors', 'posts.author_id', '=', 'authors.id')

->orderBy('authors.name', 'ASC')

->paginate(10);

Laravel Orderby Relation Column using Join DESC

$posts = Post::select('*')

->join('authors', 'posts.author_id', '=', 'authors.id')

->orderBy('authors.name', 'DESC')

->paginate(10);

Example 4: Ordering by has-one/belongs-to relationships

You can also use subquery orderBy() and orderByDesc() functions So, let's see bellow examples.

Laravel Order By Relation Column using Join ASC

$posts = Post::select('*')

->orderBy(Author::select('name')

->whereColumn('authors.id', 'posts.author_id')

)

->paginate(10);

Laravel Orderby Relation Column using Join DESC

$posts = Post::select('*')

->orderByDesc(Author::select('name')

->whereColumn('authors.id', 'posts.author_id')

)

->paginate(10);

Example 5: Ordering by has-many relationships

You can also use subquery orderBy() and orderByDesc() functions So, let's see bellow examples.

Laravel Order By Relation Column using Join ASC

$posts = Post::select('*')

->orderBy(Author::select('name')

->whereColumn('authors.id', 'posts.author_id')

->latest()

->take(1)

)

->paginate(10);

Laravel Orderby Relation Column using Join DESC

$posts = Post::select('*')

->orderByDesc(Author::select('name')

->whereColumn('authors.id', 'posts.author_id')

->latest()

->take(1)

)

->paginate(10);

I hope it can help you...

Tags :
Shares