拉拉维尔验证规则在尝试更新同一记录而不进行任何更改时失败

我有一个名为 的表,它由 、 和其他一些目前不重要的字段组成。Sidesidnameside_category_id


我想验证在创建新记录时,该记录尚不存在。因此,假设我在数据库中有一条记录,例如:side


id: 1

name: Salad

side_category_id: 3

如果我尝试插入一条新记录,然后创建必须失败并返回错误。name = 'salad'side_category_id = 3


我通过使用以下规则实现了这一点:


$rules = [

   'name'             => 'required',

   'side_category_id' => 'required|exists:side_categories,id|unique:sides,side_category_id,NULL,id,name,' . $this->request->get('name')

]

目前为止,一切都好。它按预期工作。但是现在,如果我想编辑记录并在没有任何修改的情况下保存它,它会返回一个错误,这不是我想要的结果。


如果我尝试在不进行任何修改的情况下更新记录,它应该会成功。如何更新我的规则以实现此目的?


慕容森
浏览 58回答 1
1回答

小唯快跑啊

你可以使用规则::唯一()用于像这样创建使用$rules = [   'name'             => ['required'],   'side_category_id' => ['required',Rule::unique('sides', 'name')->where(function ($query) use($category_id) {    return $query->where('side_category_id', $category_id);}),Rule::exists('side_categories')]]进行更新$rules = [       'name'             => ['required'],       'side_category_id' => ['required',Rule::unique('sides', 'name')->where(function ($query) use($category_id) {        return $query->where('side_category_id', $category_id);    })->ignore($id),Rule::exists('side_categories')]    ]//$id should be you parameter
打开App,查看更多内容
随时随地看视频慕课网APP