如果用户将相同的食物选项Laravel添加到购物车中,则会增加食物的数量



我正在用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是Size,SubOption是S($0(、M($1(、L($1.5(。在购物车中已经存在数量=1的奶茶Size S。如果用户选择奶茶尺寸S并再次添加到购物车中。数量将增加到2。如何在控制器中检查此项。非常感谢大家!

您可以检查此订单是否存在,然后将其添加到数量中并保存,否则创建一个新记录,您还需要一个显示所选选项的"selected_options"输入:

$orderDetail =  OrderDetail::where(['food_id' => $request->input('food'), 
'order_id' => $order->id])->first();
$check = $orderDetail->sub_option->where("food_option_id",$request->input('selected_option'));
...
if($check->exists()){
//$orderDetail =  OrderDetail::where(['food_id' => $request->input('food'), 
//'order_id' => $order->id])->first();
$orderDetail1->quantity += 1;
$orderDetail1->save();
}else{
$orderDetail = new OrderDetail();
......
}

相关内容

最新更新