[WITH] Laravel Order By Relation Column Example

https://www.itsolutionstuff.com/post/laravel-order-by-relation-column-exampleexample.html

Laravel Order By Relation Column Example

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 and laravel 9.

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

Read Also: Laravel Order By Relationship Sum Column Example

$posts = Post::select('*')
->join('authors', 'posts.author_id', '=', 'authors.id')
->orderBy('authors.name', 'DESC')
->paginate(10);

I hope it can help you...

Last updated