model(); $updates = $form->updates(); [$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates); if ($relations) { $updates = Arr::except($updates, array_keys($relationKeyMap)); } foreach ($updates as $column => $value) { $model->setAttribute($column, $value); } //处理剩余量字段 $model = $this->createStock($model); $result = $model->save(); $this->updateRelation($form, $model, $relations, $relationKeyMap); }); return $this->model()->getKey(); } /** * 更新数据. * * @param Form $form * @return bool */ public function update(Form $form) { /* @var EloquentModel $builder */ $model = $this->model(); if (! $model->getKey()) { $model->exists = true; $model->setAttribute($model->getKeyName(), $form->getKey()); } $result = null; DB::transaction(function () use ($form, $model, &$result) { $updates = $form->updates(); [$relations, $relationKeyMap] = $this->getRelationInputs($model, $updates); if ($relations) { $updates = Arr::except($updates, array_keys($relationKeyMap)); } foreach ($updates as $column => $value) { /* @var EloquentModel $model */ $model->setAttribute($column, $value); } $model = $this->createStock($model); $result = $model->update(); $this->updateRelation($form, $model, $relations, $relationKeyMap); }); return $result; } /** * Undocumented function * * @return void */ public function createStock($model) { if ($model->limit == 0) { $model->setAttribute('stock', 0); } else { $model->setAttribute('stock', $model->limit - $model->sent); } return $model; } }