Yêu cầu thg 3 8, 2022 4:59 CH 89 3 1
  • 89 3 1
+1

Orderby theo relationship laravel

Chia sẻ
  • 89 3 1

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

1 CÂU TRẢ LỜI


Đã trả lời thg 3 9, 2022 2:15 SA
Đã được chấp nhận
+2

Cái này tương tự câu hỏi của bạn này https://stackoverflow.com/a/40021201

Chia sẻ
Avatar LongThanh @LongThanh.it
thg 3 9, 2022 2:40 SA

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); 
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí