~ We are changing the world with technology. ~

Matt Mullenweg

Eloquent Relations: Mengurutkan Data di Laravel 5

Eloquent Relations: Mengurutkan Data di Laravel 5

4886 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

Aplikasi E-Commerce Laravel 6 #18: Membuat Fitur Afiliasi Laravel

Aplikasi E-Commerce Laravel 6 #18: Membu...

Beragam cara atau teknik penjualan dilakukan guna mendongkrak transaksi pada sebuah bidang usaha, termasuk salah satu teknik marketing yang banyak digunakan adalah afiliasi. Berikut adalah cara membua...

Aplikasi E-Commerce Laravel 6 #17: Laporan Periode Date Range Laravel

Aplikasi E-Commerce Laravel 6 #17: Lapor...

Laporan memiliki peranan penting dalam mengevaluasi sebuah bisnis, termasuk dalam hal ini adalah transaksi jual beli. Fitur ini tidak lebih dari sekedar feed order, akan tetapi ada pembaca DaengWeb ya...

Aplikasi E-Commerce Laravel 6 #16: Integrasi Telegram Bot Laravel

Aplikasi E-Commerce Laravel 6 #16: Integ...

Membuat notifikasi dalam bentuk sosial chat akan lebih cepat tersampaikan kepada pemilik aplikasi karena di era ini orang-orang banyak menghabiskan waktunya dengan sosial media / chat. Berikut adalah...

Komentar