在我的Laravel 5.8中,我想在我的数据库中更新medecin。
我有一个MedecinController和一个FormRequest方法更新。
当我犯了一个错误就像把一个必填字段放空时,我有一个错误。
但是当我在补码字段中进行修改时,没有...没有更新,没有错误消息。
我的表单包含其他10个不需要的字段。
你能帮助我吗 ?
MedecinController:
public function update(CreateUpdateMedecinRequest $request, $id)
{
$medecin = Medecin::findOrFail($id);
$medecin->m_complement = $request->input('complement');
$medecin->save();
return back();
}
CreateUpdateMedecinRequest:
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
if(Auth::user()->hasRole([7,6]))
{
return true;
}
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'nom' => 'required',
'adresse' => 'required',
'cp' => 'required|max:5',
'ville' => 'required',
'telephone' => 'required',
'specialite' => 'required',
];
}
路线:
Route::resource('medecins', 'Medecin\MedecinController', [
'only' => ['index', 'create', 'store', 'edit', 'update'],
'names' => [
'index' => 'viewMedecins',
'create' => 'createMedecin',
'store' => 'storeMedecin',
'edit' => 'editMedecin',
'update' => 'updateMedecin'
]
]);
我建议您分别创建和更新表单请求。
例如,请提出以下表格请求:(MedecinPostRequest
或MedecinCreateRequest
)和(MedecinPutRequest
或MedecinUpdateRequest
)
这样您将拥有更多DRY代码。接下来,在控制器类中使用创建的请求,如下所示:
public function create(MedecinPostRequest $request, $id)
public function update(MedecinPutRequest $request, $id)
通过这样做,您可以更好地控制传入的请求,如果您将来有一些特定的角色,一个角色只能创建Medecin,而另一个角色只是为了更新Medecin或任何未来的模型,您可以授权用户。
现在您有2个表单请求,请确保在需要的post请求中需要所有字段,并且在更新中,仅在存在时才需要它们。此外,在更新请求中,如果您需要忽略唯一字段验证,则可以轻松完成。 (示例:name必须是唯一的,但可以与更新的记录相同。)