+1
Orderby theo relationship laravel
Mình có thắc mắc nhờ mn support với ạ. Mình có 2 bảng là Category và Post
- Cat1 có 5 post
- cat2 có 10 post
- cat3 có 6 post
Yêu cầu hiển thị danh sách category sắp xếp theo số lượng post. ví dụ như trên thì sẽ theo thứ tự giảm dần là
- cat2 (10)
- cat3 ( 6)
- cat1 (5)
Mình đã tạo model Category và Post có tạo relationship
public function post()
{
return $this->hasMany(Post::class, 'category_id');
}
trong controller
$cat = Category::where('published', 1)->with('post')->paginate(10);
foreach( $cat as $item){
echo $item->id . ' ---' .$item->post->count();
}
code này hiện tại đã lấy được danh sách category và sô sluowngj post tương ứng rồi, nhưng mình ko thể sắp xếp chúng theo số lượng post của từng category. Mong được giúp đỡ. Thanks
Thêm một bình luận
1 CÂU TRẢ LỜI
Thank mình đã làm được. cả hai cách này đều work
$category= Category::with('post')->get()->sortByDesc(function ($category) {
return $category->post->count();
});
//$category= Category::withCount('post')->orderBy('post_count', 'desc')->paginate(10);