【发布时间】:2020-04-10 04:31:35
【问题描述】:
当我存储新记录时,Laravel 会返回新记录。一切正常。 当我更新记录时,Laravel 会返回旧记录。我喜欢返回更新后的记录。
控制器
public function store(StoreProjectRequest $request)
{
$data = $this->repo->create( $request->all());
return response()->json(new ProjectResource($data));
}
public function update(UpdateProjectRequest $request, Project $project)
{
$data = $this->repo->update($project, $request->all());
return response()->json(new ProjectResource($data));
}
存储库
public function create( $data)
{
$this->model->name = $data['name'];
$this->model->description = $data['description'];
$this->model->sales_order_id = $data['sales_order_id'] ? $data['sales_order_id'] : NULL;
$this->model->project_leader_id = $data['project_leader_id'];
$this->model->project_type_id = $data['project_type_id'];
$this->model->project_status_id = $data['project_status_id'];
$this->model->creator_id = Auth()->id();
$this->model->save();
return $this->model;
}
public function update($model, $data)
{
$model->name = $data['name'];
$model->description = $data['description'];
$model->sales_order_id = $data['sales_order_id'];
$model->project_leader_id = $data['project_leader_id'];
$model->project_type_id = $data['project_type_id'];
$model->project_status_id = $data['project_status_id'];
$model->save();
return $model;
}
当我添加$data = Project::find($project->id)我收到更新的模型。
但这是唯一的方法吗?
【问题讨论】:
-
这是您直接设置的具有更新属性的模型,除了您正在设置的属性具有新值之外,您还期望发生什么?
-
repo 更新返回的是旧值的模型。使用“$data->fresh()”,返回值更新。 google了一下,还是不明白,为什么第一个版本没有返回更新的模型
-
它会返回带有您直接分配给它的新值的模型,除非您有一些变异器正在做一些奇怪的事情