#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. «идентификатор пользователя» вы создали свою собственную таблицу пользователей или изменили имя столбца идентификатора пользователя???