~ We are changing the world with technology. ~

Matt Mullenweg

Eloquent Relations: Mengurutkan Data di Laravel 5

Eloquent Relations: Mengurutkan Data di Laravel 5

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

Full Stack Developer & Remote Worker salah satu perusahaan asal Australia. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Import With Relationships Using Laravel Excel Laravel

Import With Relationships Using Laravel...

Migrasi aplikasi ke dalam sistem yang baru, terkadang ada banyak perbedaan yang cukup signifikan, salah satu diantaranya adalah struktur database antara sistem yang lama dengan sistem yang baru. Berik...

Convert Jetstream From Tailwind to Bootstrap Laravel

Convert Jetstream From Tailwind to Boots...

Jetstream memperkenalkan diri dengan sebagai starter kit dengan design yang cukup menarik sebagai 'permulaan' dalam mengembang aplikasi menggunakan Laravel. Jetstream menyediakan beberapa fitur, diant...

Image Watermark in Laravel 8 Laravel

Image Watermark in Laravel 8

Watermark menjadi salah satu cara untuk mengantisipasi penggunaan gambar tanpa izin pemiliknya dimana hak atas gambar tersebut harus mendapatkan izin yang bersangkutan. Ada beragam kasus yang sering m...

Komentar