我如何解决 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', ...]);
我想在更新某些字段之前使用 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', ...]);