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);
}
}
}