php - 如果用户将相同的食物选项添加到购物车中,则增加食物数量 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);
}
订单详情模型:
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);
}
子选项模型:
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)。购物车中已经存在奶茶尺寸 S 数量 = 1。如果用户选择奶茶尺寸 S 并再次添加到购物车。数量将增加到 2。如何在控制器中检查。谢谢大家,太感谢了!
解决方案
您可以检查此订单是否存在,然后将其添加到数量并保存,否则创建一个新记录,您还需要一个显示所选选项的“selected_option”输入:
$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();
......
}
推荐阅读
- python - Python中的Excel文件格式绘制
- javascript - 如何在 JavaScript 中使用 PHP 中的运算符?
- excel - 使用 VBA 复制和粘贴多个单元格
- mysql - 如何使用wireshark捕获mysql查询
- python - 如何在字典中为键添加多个值
- rest - 步数与 Google Fit 应用 REST API 不匹配
- c++ - 使用 while 循环验证字符串输入
- excel - 由于 OLEDB 连接字符串在有限次数的执行后没有响应,因此面临来自 UFT 的 excel 连接问题
- python - 在 python 中迁移时出现 keyerror
- java - 如何使用 Spring boot 2.x 验证 Java 应用程序是否使用 Hikari?