[TIPS] updateOrCreate Laravel

Problem

Case yang akan digunakan adalah membuat data dummy menggunakan seeder, yang kerap kali menimbulkan kesamaan data (duplicate) karena menjalankan seeds lebih dari satu kali dengan data yang sama. Tentu saja ini hal ini bukanlah masalah yang serius karena secara otomatis tugas selanjutnya tidak akan dijalankan apabila pesan error telah ditampilkan, namun ada kesan yang "tidak nikmat" dipandang ketika pesan error tersebut ditampilkan dengan warna khas error Laravel.

Solution

Solution: 1

Untuk mengatasinya kita dapat memanfaatkan logic programming, yakni memanfaatkan fungsi if untuk mengecek ada atau tidaknya data, kurang lebih seperti berikut:

use Illuminate\Database\Seeder;
use App\Customer;

class CustomerSeed extends Seeder
{
    public function run()
    {
        $items = [            
            ['id' => 1, 'name' => 'Riski Amelia', 'gender' => 'P'],
            ['id' => 2, 'name' => 'James Ricardo', 'gender' => 'L'],
        ];

        foreach ($items as $item) {
            $customer = Customer::find($item['id']);
            if ($customer) {
                $customer->update($item);
            } else {
                Customer::create($item);   
            }
        }
    }
}

Laravel hadir dengan fiturnya yang memanjakan penggunanya, yakni fungsi updateOrCreate(), sehingga apabila diterapkan maka code diatas akan menjadi seperti berikut:

use Illuminate\Database\Seeder;
use App\Customer;

class CustomerSeed extends Seeder
{
    public function run()
    {
        $items = [            
            ['id' => 1, 'name' => 'Riski Amelia', 'gender' => 'P'],
            ['id' => 2, 'name' => 'James Ricardo', 'gender' => 'L'],
        ];

        foreach ($items as $item) {
            Customer::updateOrCreate(['id' => $item['id']], $item);
        }
    }
}

 


Pilih Salah Satu Untuk Login


Facebook Google

Review Users