getTableColumns(); $model = $this->getModel(); foreach ($data as $k => $v) { if (!in_array($k, $columns)) { continue; } $model->setAttribute($k, $v); } if ($model->plant_id) { $model->region_id = RegionPlantLog::where('id', $model->plant_id)->value('region_id'); } try{ DB::beginTransaction(); if($model->save()){ //处理关联设备 $isLast = Arr::get($data, 'is_last'); if($isLast){ $model->plant()->update([ 'end_at' => $model->harvest_at ]); } } DB::commit(); return true; }catch(Throwable $th){ DB::rollBack(); report($th); return false; } } public function update($primaryKey, $data): bool { $columns = $this->getTableColumns(); $model = $this->query()->whereKey($primaryKey)->first(); foreach ($data as $k => $v) { if (!in_array($k, $columns)) { continue; } $model->setAttribute($k, $v); } try{ DB::beginTransaction(); if($model->save()){ $isLast = Arr::get($data, 'is_last'); if($isLast){ $model->plant()->update([ 'end_at' => $model->harvest_at ]); } } DB::commit(); return true; }catch(Throwable $th){ DB::rollBack(); report($th); return false; } } }