where($where)->paginate(10)->each(function ($item) { $ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation(); $item['operations'] = $ClaimTraceabilityOperationModel->getList(); return $item; })->toArray(); } public function deleteTraceability($id) { $ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation(); $ClaimTraceabilityOperationModel->where('traceability_id', $id)->delete(); return $this->where('id', $id)->delete(); } public function addTraceability($data) { $data['traceability_operation'] = json_encode($data['traceability_operation']); $number = 'TR' . date('Ymd') . rand(1000, 9999); $data['traceability_code'] = $number; $res = $this->insert($data); $id = $this->getLastInsID(); $operationids = []; foreach (json_decode($data['traceability_operation'], true) as $v) { $v['traceability_id'] = $id; $ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation(); if ($v['id']) { $ClaimTraceabilityOperationModel->where('id', $v['id'])->update($v); } else { $v['id'] = $ClaimTraceabilityOperationModel->addData($v); } array_push($operationids, $v['id']); } $ClaimTraceabilityOperationModel->whereNotIn('id', $operationids) ->where('traceability_id', $id)->delete(); return $id; } public function updateTraceability($data, $id) { $data['traceability_operation'] = json_encode($data['traceability_operation']); $res = $this->where('id', $id)->update($data); $operationids = []; $ClaimTraceabilityOperationModel = new ClaimTraceabilityOperation(); foreach (json_decode($data['traceability_operation'], true) as $v) { $v['traceability_id'] = $id; if ($v['id']) { $ClaimTraceabilityOperationModel->where('id', $v['id'])->update($v); } else { $v['id'] = $ClaimTraceabilityOperationModel->addData($v); } array_push($operationids, $v['id']); } $ClaimTraceabilityOperationModel->whereNotIn('id', $operationids) ->where('traceability_id', $id)->delete(); return $res; } }