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 and laravel 10.
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
Read Also: Laravel Order By Relationship Sum Column Example
$posts = Post::select('*')
->orderByDesc(Author::select('name')
->whereColumn('authors.id', 'posts.author_id')
->latest()
->take(1)
)
->paginate(10);
I hope it can help you…