我如何解决 Call to a member function only() on array error

How do i resolve Call to a member function only() on array error

我想在更新某些字段之前使用 laravels FormRequest 进行验证。如果我只使用,这很好用:

User::find($application->userid)->fill($request->only('first_name'...

但请求还包含子数组($request->programmeData)。

array:2 [▼
  "programme_id" => 5
  "programme_title" => "some programme title"
]

如果我尝试以同样的方式访问我得到 'Call to a member function only() on array':

Course::find($application->userid)->fill($request->programmeData->only('programme_id...

我已经尝试了一些方法,但不确定最好的方法是什么?

更新
我现在使用 foreach 循环将两个项目保存在数组中。下面的示例为 user_ids 保存了第二个值。这不是为第一个 user_id 保存第一个值的任何原因吗?

foreach ($request->programmeData['userProgrammes'] as $key=>$userProgrammes) {
   Course::where('application_id', $application->id)->get()[$key]->fill(Arr::only($request->programmeData['userProgrammes'][$key], ['programme_id']))->save();
}

但没有任何更新。对此有什么想法吗?

您可以为此使用 Array::only() helper

foreach ($request->programmeData['userProgrammes'] as $key=>$userProgrammes) {
   Course::where('application_id', $application->id)->first()->fill([
      $key => Arr::only($request->programmeData['userProgrammes'][$key], ['programme_id'])
   ])->save();
   // or
   $course = Course::where('application_id', $application->id)->first()
   $course->$key = Arr::only($request->programmeData['userProgrammes'][$key], ['programme_id']);
   $course->save();
}
//Arr::only($request->programmeData, ['programme_id', ...]);