为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕容森 2022-09-25 18:59:44
我有一个名为 的表,它由 、 和其他一些目前不重要的字段组成。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


查看完整回答
反对 回复 2022-09-25
  • 1 回答
  • 0 关注
  • 57 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信