我有一个名为 的表,它由 、 和其他一些目前不重要的字段组成。Sidesidnameside_category_id我想验证在创建新记录时,该记录尚不存在。因此,假设我在数据库中有一条记录,例如:sideid: 1name: Saladside_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')]目前为止,一切都好。它按预期工作。但是现在,如果我想编辑记录并在没有任何修改的情况下保存它,它会返回一个错误,这不是我想要的结果。如果我尝试在不进行任何修改的情况下更新记录,它应该会成功。如何更新我的规则以实现此目的?
1 回答
小唯快跑啊
TA贡献1863条经验 获得超2个赞
你可以使用规则::唯一()
用于像这样创建使用
$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
- 1 回答
- 0 关注
- 57 浏览
添加回答
举报
0/150
提交
取消