【问题标题】:Laravel returns old model after updateLaravel 更新后返回旧模型
【发布时间】: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了一下,还是不明白,为什么第一个版本没有返回更新的模型
  • 它会返回带有您直接分配给它的新值的模型,除非您有一些变异器正在做一些奇怪的事情

标签: laravel eloquent


【解决方案1】:

$data 作为旧数据返回的原因是它仍然存储变量创建时的数据。当您调用$data->fresh() 时,它将获取新数据并返回。那有意义吗?

【讨论】:

    猜你喜欢
    • 2022-11-28
    • 2020-05-23
    • 2020-05-06
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多