Asked Mar 8th, 4:59 p.m. 83 3 1
  • 83 3 1
+1

Orderby theo relationship laravel

Share
  • 83 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 ANSWERS


Answered Mar 9th, 2:15 a.m.
Accepted
+2

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

Share
Avatar LongThanh @LongThanh.it
Mar 9th, 2:40 a.m.

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); 
0
| Reply
Share
Viblo
Let's register a Viblo Account to get more interesting posts.