首页 > 解决方案 > 想要使用 laravel 更新 vuejs 中的数组值

问题描述

我有一个更新形式的数组值。当用户更改文本区域时,我需要更新特定值。看起来像这样 在此处输入图像描述

在我的 vuejs 中,数据对象看起来像这样。

data() {
    return {
      jobs: [],
      details: {
        basic_id: this.$route.params.id,
        work: this.jobs
      }
    };
  },

和我这样写的更新方法。

updateDetails() {
  this.loading = true;
  this.updateWorkedPlaces(this.details)
   .then(() => {
     console.log("success");
     this.loading = false;
   })
   .catch(() => {
     this.loading = false;
    });
 }

我将这些值传递给我的 vuex 操作方法。

async updateWorkedPlaces({ commit }, payload) {
  let job = await Api().put("works/" + payload.basic_id, payload.work);
  commit("UPDATE_WORK", job);
},

我将这些值传递给我的 laravel 后端更新函数。它看起来像这样。

public function update(Request $request, $id)
{
   $work = $request->work;
   $basic = $request->basic_id;
   foreach ($request->work as $i => $id) {
      $job = Job::findOrFail($basic);
      $job->fill(['position' => $id['position'], 'address' => $id['address']])->save();
   }
   return response()->json(['message' => 'success']);
}

但是当我将这些值传递给这个函数时,它会显示这个错误。

Invalid argument supplied for foreach()

我该如何解决这个错误。任何人都可以帮助我吗?

标签: laravelvue.jsvuex

解决方案


我想出了这个功能的问题

public function update(Request $request, $id)
{
  $collection = $request->all();
  for ($i = 0; $i < count($collection); $i++) {
     Job::where('id', $collection[$i]['id'])
     ->update([
          'position' => $collection[$i]['position'],
          'address' => $collection[$i]['address']
        ]);
    }
    return response()->json(['collection' => $collection]);
}

推荐阅读