Cara Menggunakan Scope Di Laravel - CRUDPRO

Cara Menggunakan Scope Di Laravel

Cara Menggunakan Scope Di Laravel

Membuat Scopes di Laravel

Anggap Anda sedang membangun aplikasi manajemen proyek, dan di berbagai tempat, Anda harus mengambil semua proyek yang sudah selesai. Anda dapat menggunakan kondisi berikut untuk mengambil proyek yang telah selesai.

$completedProjects = Project::where('completed', 1)->get();

Anda mungkin perlu menggunakan kondisi di atas di berbagai tempat di seluruh aplikasi Anda. Anda dapat menggunakan scope Laravel untuk DRY kode. Ruang lingkup hanyalah metode yang dapat Anda gunakan dalam model Anda untuk merangkum sintaks yang digunakan untuk mengeksekusi kueri seperti di atas. Scope didefinisikan dengan awalan nama metode dengan ruang lingkup, seperti di bawah ini.

class Project extends Model
{
    public function scopeCompleted($query)
    {
        return $query->where('completed', 1);
    }

}

Dengan scope yang didefinisikan di atas, Anda dapat menjalankannya seperti ini:

$completedProjects = Project::completed()->get();

Membuat Scopes Dinamis di Laravel

Namun, jika Anda ingin membuat ruang lingkup ini dinamis dan ingin menyelesaikan proyek yang belum selesai maka Anda dapat memberikan argumen, cukup tentukan parameter masukan seperti yang akan Anda lakukan pada metode model apa pun.

class Project extends Model {

    public function scopeCompleted($query, $arg)
    {
        return $query->where('completed', $arg);
    }
}

Dengan parameter masukan yang ditentukan, Anda dapat menggunakan ruang lingkup seperti ini:

// Get completed projects
$completedProjects = Project::completed(1)->get();

// Get incomplete projects
$nonCompletedProjects = Project::completed(0)->get();

Menggunakan Scopes dengan Relasi

Anda sering kali ingin menggunakan scope dalam hubungannya dengan relasi. Misalnya, Anda bisa mendapatkan kembali daftar proyek yang terkait dengan pengguna:

$user = User::findOrFail(1); // 1 is user id
$completedProjects = $user->projects()->completed(1)->get();

scope Laravel paling baik digunakan saat Anda memiliki beberapa kueri berulang dan ingin menggunakan kembali kodenya lagi dan lagi.