Menggunakan Scope pada Laravel

Ada saatnya kita perlu query khusus dan dapat digunakan kembali tanpa menulis ulang query Scope pada Laravel adalah solusinya.

Ada saatnya kita perlu query khusus dan dapat digunakan kembali tanpa menulis ulang query Scope pada Laravel adalah solusinya.

Laravel adalah salah satu framework PHP yang paling populer dan sering digunakan dalam mengembangkan sebuah aplikasi berbasis web. Salah satu fitur andalannya adalah Eloquent, dimana dengan script yang simple dan mudah dimengerti kita dapat berinteraksi dengan mudah pada database yang kita pakai. Tetapi ada saatnya kita perlu query khusus dan dapat digunakan kembali tanpa menulis ulang query, salah satunya solusinya menggunakan Scope.

Laravel Scope

Laravel Scope

Di sini kita akan mencoba bagaimana mengintegrasikan fitur scope. Contoh kita ingin mengambil data pegawai, script yang biasa kita gunakan mungkin seperti ini.

$pegawai = Pegawai::where('active', true)->get();

Tetapi saya membutuhkan hal yang sama dengan modul lain juga. Jadi saya perlu menulis lagi dan lagi ini di mana ini terasa tidak efektif. Inilah saatnya fitur Scope beraksi.

class Pegawai extends Model
{

    public function scopeActive($query)
    {
        return $query->where('active', true);
    }

}

Laravel akan mendefinisikan scope sebagai alias. Sekarang saya bisa mendapatkan pegawai aktif menggunakan Pegawai::active()->get();

$pegawai= Pegawai ::active()->get();

Hal ini akan semakin terasa kegunaan nya saat query anda terlalu panjang, misal menampilkan daftar pegawai aktif pada divisi HRD, kita dapat membuat Scope yang dinamis

class Post extends Model {

    public function scopeActive($query, $value)
    {

        return $query->where('active', true)
                     ->where('divisi', $value);
    }

}

Kita sekarang dapat menampilan pegawai aktif pada divisi tertentu dengan cara

// Pegawai Divisi HRD
$pegawaiHrd = Post::active('HRD')->get();

// Pegawai Divisi IT
$pegawaiIT = Post::active('IT')->get();

Kita juga dapat menggunakan scope dengan fitur relationship.

$kantor = KantorCabang::find(1);
$pegawai = $kantor->pegawai()->active('HRD')->get();

Sangat mudah bukan menggunakan fitur Scope pada Laravel yang tentunya akan membuat anda semakan cepat dalam proses pengembangan website dan juga code yang anda tuliskan semakin rapi.

Penutup

Demikian artikel kali ini, Semoga dapat membantu kamu memahami cara penggunaan Scope pada Laravel. Semoga bermanfaat. Terima kasih.