mercredi 28 mars 2018

Laravel - Duplicate entry

I'm making a system and within this system I have a piece of code which checks for the latest "Order" using the created_at field and it checks the latest "Order_nr" and when a new one is created the number of order_nr goes +1. Here is the code I'm talking about

$order = new Order;
$order->user_id = Auth()->id();
$latestOrder = Order::orderBy('created_at', 'DESC')->first();
$order->order_nr = '#'.str_pad($latestOrder->id + 1, 8, "0", STR_PAD_LEFT);
$order->sub_total = $subtotal;
$order->vat = $vat;
$order->price_sum = $priceSum;
$order->save();

this makes every order number unique. When I seed my database the timestamps are all the same. Now when I try to save the order by executing the code above I get the following error:

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '#00000002' for key 'orders_order_nr_unique' (SQL: insert into orders (user_id, order_nr, sub_total, vat, price_sum, updated_at, created_at) values (1, #00000002, 18.12, 3.8052, 21.9252, 2018-03-28 07:30:51, 2018-03-28 07:30:51))

When I change the latest order's time to a second later the code works just fine. How can I solve this? What is the best way to execute this?



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire