Я строю паутину для заказа еды с laravel.Если пользователь добавит в корзину ту же еду в корзине, количество еды увеличится.Я создал 3 модели: OrderDetail, OrderOptionDetail, SubOption
Модель питания:
public function food_options(){
return $this->hasMany(FoodOption::class);
}
public function order_detail(){
return $this->hasMany(OrderDetail::class);
}
Модель FoodOption:
public function sub_options(){
return $this->hasMany(SubOption::class);
}
Модель OrderDetail:
protected $fillable = [
'order_id','food_id', 'quantity'
];
public function order_option_detail(){
return $this->hasMany(OrderOptionDetail::class);
}
public function food(){
return $this->belongsTo(Food::class);
}
Модель OrderOptionDetail:
protected $fillable = [
'order_detail_id', 'option_id','sub_option_id'
];
public function sub_option(){
return $this->belongsTo(SubOption::class);
}
Модель SubOption:
use Translatable;
public $translatedAttributes = [
'name'
];
protected $fillable = [
'food_option_id',
'price'
];
В контроллере:
public function Order(Request $request){
$orderDetail = OrderDetail::where(['food_id' => $request->input('food'), 'order_id' => $order->id])->get();
...
if(...){
$orderDetail1->quantity += 1;
$orderDetail1->save();
}
}
Например: чай с молоком имеет FoodOption is Размер и SubOption являютсяS ($ 0), M ($ 1), L ($ 1,5).В корзине уже есть Молочный чай Размер S с количеством = 1. Если пользователь выберет Молочный чай Размер S и снова добавьте его в корзину.количество увеличится до 2. Как это проверить в контроллере.Спасибо всем большое!