log = new LogModel([ 'module' => 'goods', 'action' => $request->getMethod(), 'target_type' => 'goods_sku', ]); } public function index(Request $request) { $goods = Goods::query()->get(['id', 'title', 'img_url', 'type_id', 'brand_id', 'goods_code']); return GoodsResource::collection($goods); } public function store(Request $request) { $goodsRules = (new GoodsRequest())->rules(); $skuRules = (new GoodsSkuRequest())->arrayRules('skus.*.'); $validator = Validator::make($request->all(), array_merge($goodsRules, ['skus' => ['required', 'array']], $skuRules)); if ($validator->fails()) { $this->setValidatorFailResponse($validator->getMessageBag()->getMessages()); return response($this->res, $this->res['httpCode']); } DB::beginTransaction(); try { if (!empty($request->id)) { $goods = Goods::query()->find($request->id); } else { $goods = new Goods(); $goods->title = $request->title; $goods->img_url = $request->img_url; $goods->type_id = $request->type_id; $goods->brand_id = $request->brand_id; $goods->goods_code = $request->goods_code; $goods->save(); } $goodsSkus = []; foreach ($request->skus as $item) { $item['goods_id'] = $goods->id; $goodsSkus[] = $item; } $collection = $goods->skus()->createMany($goodsSkus); $this->setAfterUpdate($collection->toArray()); $this->addLog(0, 'add'); DB::commit(); } catch (\Exception $exception) { DB::rollBack(); $this->res = [ 'httpCode' => 400, 'errorCode' => 400416, 'errorMessage' => $exception->getMessage(), ]; } return response($this->res, $this->res['httpCode']); } }