menampilkan article/post berdasarkan komentar terbnyak

tolong di bantu gan ,,, sudah hampir 24 jam gax ketemu2, jadi saya punya table article dan table comments, sudah saya coba query di mysql nya begini :

select article.id,judul , count(article_id) from article join comments on article.id = comments.article_id group by article_id order by count(article_id) DESC;

//dan hasil out putnya begini

+----+--------------+------------------+
| id | judul        | count(article_id)|
+----+--------------+------------------+
|  7 | article 7    |                6 |
| 11 | article 11   |                3 |
|  6 | article 6    |                2 |
|  1 | article 1    |                2 |
| 10 | article 10   |                1 |
|  3 | article 3    |                1 |
|  5 | article  5   |                1 |
+----+--------------+------------------+

//saya pakai jaoin sprti ini gan

$tops  = DB::table('article')->join('comments', function($join){
                $join->on('article.id', '=', 'comments.article_id')
                ->where('comments.article_id', '!=', null);
            })->select('comments.*', 'article.*', DB::raw('count(*) as total'))
            ->groupBy('article_id')->orderBy(DB::raw('count(article_id)'),'DESC')->get();
//tapi saya masih belum bisa mengeluarkan jumlah komentarnya di blade.php nya
//code di blade.php

@foreach($tops as $top)
    {{$top->id}} > {{$top->judul}} > {{apa disini ?)}} <br>
@endforeach

//hasil outputnya -> saya coba pakai count error terus gan ,,,

7  > article 7  >
11 > article 11 >
1  > article 1  >
6  > article 6  >
3  > article 3  >
5  > article 5  >
10 > article 10 >

bukan bermagsud menyerah tapi hampir frustasi ,,, thankz gan...

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Diperbarui 7 tahun yang lalu

4 Jawaban:

Di luar pertanyannya, kalau agan sekedar mau gabungin 2 table, jauh lebih efisien pake sistem relation di laravel nanti tinggal manggil:

$comments = Article::all()->comments;

Kalo mau jumlah harusnya bisa dichain langsung $comments->count()

Dok laravel https://laravel.com/docs/5.4/eloquent-relationships#one-to-many-inverse Tutorial di sekolahkoding https://sekolahkoding.com/kelas/belajar-laravel-relation

avatar hilmanski
@hilmanski

2665 Kontribusi 2131 Poin

Dipost 7 tahun yang lalu

iya kak hilman,,,,sebenernya saya sudah coba yang seperti itu. Sedikit ribet kak hilman magsud saya mau menampilkan article dg jumlah commentar terbanyak dan di sertai jumlah commentarnya.

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

$tops = Article::whereHas('comments',
                 function ($query) {
                   $query->where('article_id', '!=', null);
                 })->paginate(6);

Kak hilman sebernaya saya sudah coba cara ini, dan berhasil, cuman masih belum bisa orderBy jumlah komentarnya, jadi saya mau menampilkan article dg jumlah komentar yang terbanyak dulu, kalau skrng hasil nya masih ASC dari id article nya.

gimana ya caranya....

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

Jawaban Terpilih

Begini gan,,,,,, Berhasil ...

$tops = Article::get()->sortByDesc(function($cek){
        return $cek->comments->count();
});

avatar harry_putter
@harry_putter

144 Kontribusi 31 Poin

Dipost 7 tahun yang lalu

Login untuk ikut Jawaban