付费课程, 订阅后即可观看
电商系统 2 - 火烧新野
30 集视频
3小时16分钟
本期Laravel Nuxt 电商系统视频教程咱们看一看如何对添加商品到购物车的接口进行进一步的完善,让同步的操作变得符合咱们的需求,当删除商品之后,对象的数据也可以得到正确的同步。
视频后段更新购物车商品,特别是有减少商品的逻辑,我觉得复杂了一点。 既然都已经拿到了购物车中商品的ID数组,就可以直接去数据库判断并操作。
public function syncProducts($products) { // 获取购物车中商品ID数组 $variations = \Arr::pluck($products, ['product_variation_id']);
// 查询并删除 不存在数组中记录 CartItem::where('cart_id', $this->id) ->whereNotIn('product_variation_id', $variations) ->delete();
// 再更新或插入记录 foreach ($products as $product) { $filter = [ 'product_variation_id' => $product['product_variation_id'] ];
$this->items()->updateOrCreate($filter, $product); } }
这是不同的方式,我在视频里把商品添加和商品信息删减的操作都在一个接口中进行了实现。也可以分开设计多个接口,就像你想的那样,我比较懒,所以喜欢单一同步接口,后续涉及到库存检查的时候,也是在这一个接口中实现,免得每个分开的接口都需要进行相关的检查操作,做人懒成我这样,或许就是一种我作为人类退化的迹象吧。