Advertisement

Responsive Advertisement

wasRecentlyCreated dan getOriginal di Laravel Eloquent

Dalam Laravel, dua metode penting yang sering digunakan ketika bekerja dengan model Eloquent adalah wasRecentlyCreated dan getOriginal. Kedua metode ini memberikan informasi yang sangat berguna dalam proses pengolahan data yang melibatkan pembaruan atau pembuatan record baru.

1. wasRecentlyCreated

wasRecentlyCreated digunakan untuk mengecek apakah model Eloquent baru saja dibuat di dalam database setelah operasi save atau create. Metode ini mengembalikan nilai true jika model baru saja dibuat, dan false jika tidak.

Contoh Penggunaan:


$product_stock = ProductStock::updateOrCreate(
    ['product_id' => $sod->product_id, 'inventory_id' => $inventory_id, 'outlet_id' => $outlet_id],
    ['stock_current' => $new_stock]
);

// Mengecek apakah produk baru saja dibuat
if ($product_stock->wasRecentlyCreated) {
    // Produk baru dibuat
    $action_type = 'PLUS';  // Menandakan penambahan stok
} else {
    // Produk sudah ada sebelumnya
    $action_type = 'MINUS'; // Menandakan pengurangan stok
}
            

Penjelasan:

  • wasRecentlyCreated akan bernilai true jika record yang baru saja disimpan adalah sebuah record baru (bukan pembaruan).
  • Metode ini berguna dalam logika di mana kita perlu tahu apakah sebuah record baru ditambahkan, untuk memutuskan aksi yang perlu dilakukan (misalnya, "penambahan" atau "pengurangan").

2. getOriginal

getOriginal digunakan untuk mengambil nilai asli (sebelum perubahan) dari atribut tertentu pada model Eloquent. Metode ini sangat berguna ketika kita ingin membandingkan nilai lama dari sebuah kolom dengan nilai baru setelah dilakukan update.

Contoh Penggunaan:


$product_stock = ProductStock::updateOrCreate(
    ['product_id' => $sod->product_id, 'inventory_id' => $inventory_id, 'outlet_id' => $outlet_id],
    ['stock_current' => $new_stock]
);

$previous_stock = $product_stock->getOriginal('stock_current'); // Mendapatkan stok lama
$action_type = $product_stock->wasRecentlyCreated || $previous_stock < $new_stock
    ? 'PLUS' // Jika produk baru atau stok bertambah
    : 'MINUS'; // Jika stok berkurang
            

Penjelasan:

  • getOriginal('stock_current') akan mengembalikan nilai stok sebelum dilakukan update. Hal ini berguna untuk membandingkan apakah stok yang baru lebih besar atau lebih kecil dari nilai sebelumnya.
  • Metode ini memungkinkan kita untuk mendeteksi perubahan yang terjadi pada record dan membuat keputusan logis berdasarkan data lama dan baru.

Penerapan pada Kasus Stok Barang

Berikut adalah cara menggabungkan wasRecentlyCreated dan getOriginal dalam kasus yang lebih kompleks, misalnya ketika kita ingin mengelola stok barang pada produk di sebuah gudang.

Contoh Kasus:


$product_stock = ProductStock::updateOrCreate(
    ['product_id' => $sod->product_id, 'inventory_id' => $inventory_id, 'outlet_id' => $outlet_id],
    ['stock_current' => $new_stock]
);

$previous_stock = $product_stock->getOriginal('stock_current'); // Mendapatkan stok lama
$action_type = $product_stock->wasRecentlyCreated || $previous_stock < $new_stock
    ? 'PLUS' // Jika produk baru atau stok bertambah
    : 'MINUS'; // Jika stok berkurang

// Lakukan aksi selanjutnya sesuai dengan $action_type
            

Kesimpulan

  • wasRecentlyCreated: Menunjukkan apakah model baru saja dibuat di database, sangat berguna untuk mendeteksi apakah suatu record baru atau sudah ada.
  • getOriginal: Mengambil nilai asli dari atribut sebelum dilakukan perubahan, yang berguna untuk perbandingan nilai lama dan baru, seperti dalam pembaruan stok.

Kedua metode ini dapat sangat mempermudah dalam menangani logika aplikasi yang memerlukan pengecekan kondisi apakah record baru saja dibuat atau apakah terjadi perubahan pada atribut tertentu, sehingga Anda bisa mengambil keputusan yang tepat.

Posting Komentar

0 Komentar