~ We are changing the world with technology. ~

Matt Mullenweg

Eloquent Relations: Mengurutkan Data di Laravel 5

Eloquent Relations: Mengurutkan Data di Laravel 5

11765 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 .

FullStack Developer, Mobile Developer & Freelancer. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Aplikasi Booking Online Laravel 9 & Livewire #4: Dashboard Admin Page Laravel

Aplikasi Booking Online Laravel 9 & Live...

Klinik memiliki akses penuh dalam mengelola data Pasien, maka melalui artikel ini kita akan membuat 3 buah fitur, yakni: fitur Authentication menggunakan Laravel Jetstream, Kelola data Pasien dan Kelo...

Aplikasi Booking Online Laravel 9 & Livewire #3: Livewire Component & Sistem Antrian Laravel

Aplikasi Booking Online Laravel 9 & Live...

Fitur Janji Temu atau Appointment telah dibuat, berdasarkan data tersebut, kita akan mengolahnya menjadi antrian online. Data akan dikelompokkan dan diurutkan sesuai urutan pasien yang lebih dahulu me...

Aplikasi Booking Online Laravel 9 & Livewire #2: Blade Templating & Appointment Laravel

Aplikasi Booking Online Laravel 9 & Live...

Seri ke-dua dari belajar membuat Aplikasi Booking Online menggunakan Laravel 9 & Livewire adalah bagaimana memadukan Blade templating dan Livewire. Kita juga akan belajar bagaiman setup dengan Livewir...

Komentar