Laravel

Eloquent Relations: Mengurutkan Data di Laravel 5

Eloquent Relations: Mengurutkan Data di Laravel 5

2376 Dilihat

Mengolah data dalam sebuah aplikasi merupakan perkara umum dan banyak digunakan, sebab fungsi dari sebuah aplikasi adalah mempermudah dalam mengelola data yag dimiliki oleh pemilik aplikasi tersebut. Ingat! Aplikasi bertujuan untuk mempermudah, bukan mempersulit penggunanya dan makna dari "mempermudah", salah satunya adalah melakukan sort data.

Sering kali, pengguna ingin melihat data yang telah diurutkan seperti: Dimulai dari data terbaru hingga yang paling lama ataupun sebaliknya. Hal ini tentu bukan sebuah masalah yang berarti, karena dapat diselesaikan dengan mudah menggunakan query database atau pada Laravel, lebih dimudahkan lagi dengan method orderBy(). Namun, pertanyaannya, bagaimana jika data yang akan diurutkan berada pada sebuah table yang berelasi? Ditambah lagi, data tersebut berada pada child table?

Baca Juga: Custom Email Template Notification

Filter Data With Eloquent

Menariknya Laravel memiliki sebuah fitur yang bernama eloquent, selain mempermudah dalam memanipulasi database juga memiliki fitur yang sangat powerful. Untuk memahami cara kerja dari sort data yang berelasi ini menggunakan eloquent, maka case yang akan kita gunakan adalah menampilkan post yang telah diurutkan, dimana table post bereleasi dengan table user dengan ketentuan bahwa table post sebagai child table.

Umumnya yang akan dilakukan adalah membuat sebuah method di eloquent untuk mendefinisikan table yang berelasi, kurang lebih seperti ini:

public function post()
{
    return $this->hasMany('App\Post');
}

Harapannya, pada controller ketika kita melakukan hal berikut maka data seharusnya sudah bisa diurutkan (baca: Ascending):

\App\User::with('post')->orderBy('posts.created_at')->get();

Tapi, ternyata yang ditemukan adalah error

Maka Laravel memperkenalkan sebuah method yang bernama latest(). So, buka model App/User.php kemudian buat method baru:

public function latestPost()
{
    return $this->hasMany('\App\Post')->latest();
}

Dengan menggunakan method baru tersebut, maka seharusnya kita sudah bisa melakukannya dengan pendekatan seperti ini:

\App\User::with('latestPost')->get()->sortByDesc('latestPost.created_at');

Tadaaa, Hasil yang kita inginkan pun telah diperoleh dengan ketentuan menampilkan data post yang telah diurutkan secara descending. Mungkin kamu bertanya-tanya, fungsi yang mana sih yang bekerja untuk mengurutkan data? Yap, sortByDesc. Laravel telah menyediakan sebuah method yang dapat digunakan untuk mengurutkan data, sebut saja: sortBy dan sortByDesc .

Backend Developer iTechShark, salah satu perusahaan asal Amerika. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Aplikasi Laundry (Laravel 5.8 - Vue.js - SPA) #1: Schema Database Laravel

Aplikasi Laundry (Laravel 5.8 - Vue.js -...

Beragam method yang digunakan untuk membuat sebuah aplikasi sesuai dengan yang diinginkan, salah satunya menggunakan SPA. Dalam tutorial ini kita akan belajar bagaimana membuat aplikasi laundry menggu...

Google Authentication With Laravel 5.8 Laravel

Google Authentication With Laravel 5.8

Otentikasi menjadi gerbang utama sekaligus protector yang biasanya digunakan untuk melindungi data atau membatasi akses pada aplikasi terkait. Berikut adalah cara membuat authenticate google di Larave...

Membuat Repository Pattern Laravel 5.7 Laravel

Membuat Repository Pattern Laravel 5.7

Laravel hadir dengan berbagai fitur beserta kemudahan yang ditawarkan guna mempercepat proses development, namun bukan berarti hal itu membuat kita menjadi programmer "pemakai" tanpa memikirkan dan be...

Komentar