在Laravel 5.8中,我想更新数据库中的medecin。
我有一个MedecinController和一个用FormRequest更新的方法。
当我犯了一个错误,例如将必填字段留空时,我就会出错。
但是当我在补码字段中进行修改时,什么都没有...没有更新,也没有错误消息。
我的表单包含10个其他必填字段。
你能帮我吗?
MedecinController:
RemoveEmptyEntries
CreateUpdateMedecinRequest:
IEnumerable<string> items = searchterms.Trim().Split(new string[] { Environment.NewLine, }, StringSplitOptions.RemoveEmptyEntries);
路线:
public function update(CreateUpdateMedecinRequest $request, $id)
{
$medecin = Medecin::findOrFail($id);
$medecin->m_complement = $request->input('complement');
$medecin->save();
return back();
}
答案 0 :(得分:0)
我建议您将“创建”和“更新”表单请求分开。
例如,发出以下表单请求:(MedecinPostRequest
或MedecinCreateRequest
)和(MedecinPutRequest
或MedecinUpdateRequest
)
这样,您将获得更多的DRY代码。接下来,在控制器类中使用创建的请求,如下所示:
public function create(MedecinPostRequest $request, $id)
public function update(MedecinPutRequest $request, $id)
这样做,您将对传入的请求有更多的控制权,并且可以授权用户,前提是您将来拥有某些特定角色,即一个角色只能创建Medecin,而另一个角色只能使用此模式更新Medecin或任何将来的模型。
现在您有2个表单请求,请确保在需要的后期请求中所有字段都是必需的,并且在更新中,仅当存在时才需要它们。同样,在更新请求中,如果您需要忽略唯一字段验证,则可以轻松进行。 (例如:名称必须是唯一的,但可以与更新的记录相同。)