Skip to content

Metode Magic Pada Laravel

Published:

Table Of Contents

Open Table Of Contents

Menggunakan Metode Magic create()

Metode create() pada model Laravel memungkinkan Anda untuk membuat dan menyimpan record baru dalam satu langkah. Anda dapat menyediakan array data langsung sebagai argumen metode create(). Ini akan secara otomatis mengisi model dengan data yang diberikan dan menyimpannya ke dalam database 😉

// Tanpa menggunakan create()
$user = new User;
$user->name = 'John Doe';
$user->email = 'johndoe@example.com';
$user->save();

// Menggunakan create()
$user = User::create([
    'name' => 'John Doe',
    'email' => 'johndoe@example.com',
]);

Menggunakan Metode firstOrCreate()

Metode firstOrCreate() pada model Laravel mencari record berdasarkan kriteria yang diberikan. Jika ditemukan, record tersebut akan dikembalikan. Jika tidak, sebuah record baru akan dibuat dengan data yang diberikan ✌️

// Tanpa menggunakan firstOrCreate()
$user = User::where('email', 'johndoe@example.com')->first();
if (!$user) {
    $user = new User;
    $user->name = 'John Doe';
    $user->email = 'johndoe@example.com';
    $user->save();
}

// Menggunakan firstOrCreate()
$user = User::firstOrCreate([
    'email' => 'johndoe@example.com',
], [
    'name' => 'John Doe',
]);

Menggunakan Metode pluck() dan toArray()

Metode pluck() pada query builder Laravel memungkinkan Anda untuk mengambil kolom tunggal dari hasil query. Metode toArray() pada koleksi (collection) Laravel mengubah koleksi menjadi array biasa

// Tanpa menggunakan pluck() dan toArray()
$userNames = User::select('name')->get();
$userNamesArray = [];
foreach ($userNames as $userName) {
    $userNamesArray[] = $userName->name;
}

// Menggunakan pluck() dan toArray()
$userNamesArray = User::pluck('name')->toArray();

Menggunakan Metode with()

Metode with() pada query builder Laravel memungkinkan Anda untuk melakukan eager loading terhadap relasi yang terkait. Ini membantu menghindari masalah N+1 dalam penarikan data dari database

// Tanpa menggunakan with()
$users = User::all();
foreach ($users as $user) {
    echo $user->name;
    echo $user->role->name; // N+1 query
}

// Menggunakan with()
$users = User::with('role')->get();
foreach ($users as $user) {
    echo $user->name;
    echo $user->role->name; // Tidak ada N+1 query
}

Menggunakan Metode whereHas()

Metode whereHas() pada query builder Laravel memungkinkan Anda untuk memfilter hasil query berdasarkan kondisi pada relasi yang terkait 😥

// Tanpa menggunakan whereHas()
$users = User::all();
$activeUsers = [];
foreach ($users as $user) {
    if ($user->posts()->where('status', 'active')->exists()) {
        $activeUsers[] = $user;
    }
}

// Menggunakan whereHas()
$activeUsers = User::whereHas('posts', function ($query) {
    $query->where('status', 'active');
})->get();

Itulah beberapa jenis method magic yang bisa kalian gunakan.. Semoga bermanfaat…. 😉

Mari terhubung bersama saya.. LinkedIn: https://www.linkedin.com/in/afzn00/ Github: https://github.com/ahmfzn00