在我的控制器中,我试图更新我的产品,这里的产品名称是唯一的,在这里我只想更新价格。所以名称将是它,但因为我定义名称作为一个唯一的字段,虽然我没有更改名称它会抛出我唯一的名称验证错误,因为这个名称已经存在。当我不更新唯一值时,如何忽略该验证请求?
public function update(Request $request, $id)
{
$this->validate($request, [
'name'=> 'required|unique:products,'.$id,
]);
$product= Product::find($id);
$product->name = Input::get('name');
$product->price = Input::get('price');
$product->save();
}
答案 0 :(得分:4)
将其更改为:
'name'=> 'required|unique:products,name' . $id,
答案 1 :(得分:2)
将unique column name
添加到验证规则:
'name'=> 'required|unique:products,name,'.$id,
答案 2 :(得分:1)
unique:table,column,except,idColumn
验证字段在给定数据库表上必须是唯一的。 如果未指定列选项,则将使用字段名称。
试试这个:
'name'=> 'required|unique:products,name'.$id,
答案 3 :(得分:0)
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
答案 4 :(得分:0)
只需添加以下内容
'name' => [
'required',
Rule::unique('users')->ignore($user->id),
],
我尝试了很多但没有成功,然后我意识到 name 字段也包含在 $request->validate
数组内的不同数组中。
注意: ignore()
函数期望 id 和 unique()
函数期望表名