LARAVEL : Обновите стоимость товара с помощью количества в корзине

#sql #laravel

Вопрос:

когда я пытаюсь обновить значения своих акций, они продолжают изменять одно и то же значение для всех строк. Это мой код:

 public function subtractFromStocks(){
    $user_id=Auth::user()->user_id;
    $cartItems=DB::table('cart')
    ->join('stocks','stocks.stock_id','=','cart.stock_id')
    ->join('sizes','sizes.size_id','=','stocks.size_id')
    ->join('shoes','shoes.shoe_id','=','stocks.shoe_id')
    ->where('cart.user_id',$user_id)
    ->select('cart.stock_id as cart_stock_id','cart.quantity as cart_quantity','stocks.stocks as stocks_quantity')
    ->get();
    
    //$cartItems->decrement('stocks',$cartItems['cart_quantity']);
    foreach($cartItems as $cartItem)
    {
        $stocks=DB::table('cart')
        ->join('stocks','stocks.stock_id','=','cart.stock_id')
        ->join('sizes','sizes.size_id','=','stocks.size_id')
        ->join('shoes','shoes.shoe_id','=','stocks.shoe_id')
        ->where('cart.user_id',$user_id)
        ->update(['stocks.stocks'=> $cartItem->stocks_quantity - $cartItem->cart_quantity]);
    }
    


    return $this->deleteCartRecords();
    
}
 

Комментарии:

1. Использование соединения для обновления записей не является хорошим подходом. Можете ли вы вместо этого использовать отношения?

2. $records = DB::table('cart') ->join('stocks','stocks.stock_id','=','cart.stock_id') ->join('sizes','sizes.size_id','=','stocks.size_id') ->join('shoes','shoes.shoe_id','=','stocks.shoe_id') ->where('cart.user_id',$user_id)->get(); dd($records); сбросьте записи и посмотрите, вернет ли он все записи или записи, которые вам нужны?

3. «идентификатор пользователя» вы создали свою собственную таблицу пользователей или изменили имя столбца идентификатора пользователя???