Menggunakan Scope Di Laravel - CRUDPRO

Menggunakan Scope Di Laravel

Menggunakan Scope Di Laravel

Terkadang Anda mengalami situasi di mana Anda harus lebih sering menggunakan kembali beberapa kondisi, mari kita lihat cara mengintegrasikan cakupan dalam model Laravel dengan mudah.

Laravel menyediakan solusi untuk membungkus kondisi Anda menjadi pernyataan yang dapat dibaca dan digunakan kembali, yang disebut Scopes. Dalam posting ini, saya akan menunjukkan cara mudah mengintegrasikan cakupan ke dalam model Laravel Anda.

Membuat Lingkup di Laravel

Pertimbangkan 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 cakupan Laravel untuk DRY kode. Lingkup hanyalah metode yang dapat Anda gunakan dalam model Anda untuk merangkum sintaks yang digunakan untuk menjalankan kueri seperti di atas. Cakupan didefinisikan dengan mengawali nama metode dengan ruang lingkup, seperti di bawah ini.

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

}

Dengan cakupan yang ditentukan di atas, Anda dapat menjalankannya seperti ini:

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

Membuat Lingkup Dinamis di Laravel

Namun, jika Anda ingin membuat cakupan ini dinamis dan ingin menyelesaikan proyek yang belum selesai, maka Anda dapat memberikan argumen, cukup tentukan parameter input 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 input yang ditentukan, Anda dapat menggunakan cakupan seperti ini:

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

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

Menggunakan Lingkup dengan Hubungan

Anda akan sering ingin menggunakan cakupan dalam hubungannya dengan relasi. Misalnya, Anda dapat mengambil daftar proyek yang terkait dengan pengguna:

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

Lingkup Laravel paling baik digunakan saat Anda memiliki beberapa kueri berulang dan ingin menggunakan kembali kode berulang kali.