andriajah Mon Aug 2021 1 year ago

Membuat Group By dengan Order By di Laravel

Postingan ini difokuskan pada laravel group by with order by desc. jika Anda ingin melihat contoh group laravel berdasarkan urutan desc maka Anda adalah tempat yang tepat. Anda dapat memahami konsep grup laravel dengan orderby. saya ingin menunjukkan kepada Anda group laravel dan order by. itu juga akan dapat digunakan dengan aplikasi laravel 6, laravel 7 dan laravel 8.

Pada postingan kali ini saya akan memberikan beberapa solusi bagaimana cara mendapatkan record dengan order by desc dengan group by di aplikasi laravel. ketika Anda menggunakan laravel eloquent group by dengan order by desc maka sekarang berfungsi seperti yang kita inginkan. kita perlu mendapatkan catatan terakhir yang ditambahkan terlebih dahulu dengan group by.

 

Disini saya akan memberikan beberapa solusi bagaimana cara anda order by before group by di laravel.

 

Jadi mari kita lihat solusi di bawah ini:

Cara 1:

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $messages = Message::select("*")
                            ->where('receiver_id',$id)
                            ->orderBy('created_at', 'desc')
                            ->get()
                            ->unique('sender_id');
  
    dd($messages);
}

 

Cara 2:

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $message = Message::orderBy('created_at','DESC');
   
    $messages = DB::table(DB::raw("({$message->toSql()}) as sub"))
        ->where('receiver_id',$id)
        ->groupBy('sender_id')
        ->get();
   
    dd($messages);
}

Cara 3:

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $messages = Message::select(DB::raw('*, max(created_at) as created_at'))    
                            ->where('receiver_id',$id)
                            ->orderBy('created_at', 'desc')
                            ->groupBy('sender_id')
                            ->get();
   
    dd($messages);
}

 

Cara 4:

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */
public function index()
{
    $messages = Message::select("*")    
                            ->where('receiver_id',$id)
                            ->orderBy('created_at', 'desc')
                            ->groupBy('sender_id')
                            ->get();
   
    dd($messages);
}

 

Semoga dapat membantu Anda.

 

laravel laravle 8 tutorial laravel laravel eloquent