Прежде чем мы перейдем к действию, я надеюсь, вы должны понять, как использовать фреймворк laravel.

Я сделаю простой, как уменьшить запас продукта при совершении сделки.

Здесь я создал пример миграции или нормализации базы данных :

Отказ от ответственности:

Это только пример, вы можете изменить в соответствии с вашим случаем

Products
- id 
- code
- name
- price
- stock

transactions
- id
- transaction_no
- date

transaction_details
- id
- transactions_id
- products_id
- qty
- amount
- total

Мы ориентируемся только на товарный запас и количество деталей транзакции.

public function transactionAdd(Request $request){
  
  // database transaction to handle error query database
  DB::beginTransaction();
  try{
      
     // save transaction  
     $transaction = new Transaction;
     $transaction->transaction_no = $request->transaction_no;
     $transaction->date = $request->date;
     $transaction->save();

     //save multiple transaction details
     for($i=0; $i= sizeof($request->products_id); $i++){
       $transaction_detail = new TransactionDetail;
       $transaction_detail->transactions_id = $transaction->id;
       $transaction_detail->products_id = $request->products_id[$i];
       $transaction_detail->qty = $request->qty[$i];
       $transaction_detail->amount = $request->amount[$i];
       $transaction_detail->total = $request->total[$i];
       $transaction_detail->save();
       
       //update and reduce stock
       $product = Product::find($request->products_id[$i];
       $product->stock = $product->stock - $request->qty[$i];
       $product->save();

       // save to database if nothing error
       DB::commit();

       //redirect to your page successfull
       return redirect(<URL_REDIRECT>);

     }

  }catch(Exception $e){
    //rollback database if error function
    DB::rolback();
    // redirect to your page error exception
    return redirect();
  }
}

Это пример функции сокращения запасов товара, если у вас есть проблема или другая идея, пожалуйста, оставьте комментарий.

Спасибо за ваше время, чтобы прочитать мой пост.

Увидимся в следующий раз…