Php 更新数据时忽略唯一验证

Php 更新数据时忽略唯一验证,php,laravel,laravel-5,Php,Laravel,Laravel 5,在我的产品表中,产品名称是唯一的。如果我在更新数据时不更新产品名称,它将不允许我更新产品信息,并显示以下错误: 产品名称已被采用 更新同一产品时,如何忽略唯一名称? 以下是我用于更新的代码: public function update(Request $request, $id) { $product = Product::find($id); $this->validate($request, [ 'product_name'=&g

在我的产品表中,
产品名称
是唯一的。如果我在更新数据时不更新产品名称,它将不允许我更新产品信息,并显示以下错误:

产品名称已被采用

更新同一产品时,如何忽略唯一名称?
以下是我用于更新的代码:

public function update(Request $request, $id)
  {
     $product = Product::find($id);     
     $this->validate($request, [ 
         'product_name'=> 'unique:products,product_name,'.$product->id ,          
     ]);  
     $product->product_name = Input::get('product_name'); 
     $product->product_unit_price = Input::get('product_unit_price');
     $product->save();         
     return Redirect::to('products');
  }

如果仅使用
唯一
验证规则,则可以使用:

$this->validate($request, [
            'product_name' => Rule::unique('products')->ignore($product->id),
              ]);
或者,如果您也有其他验证规则,请使用以下方法:

$this->validate($request, [
    'product_name' => [
                'required',
                Rule::unique('products')->ignore($product->id),
             ],
     ]);

但包括
使用照明\验证\规则请确保您使用了正确的表字段名和输入名

$request->validate([
“产品名称”=>“必需”|唯一:产品,产品名称”。$product->id,

]);您确定要设置的名称实际上没有被数据库中的另一行使用吗?你所做的工作应该按照计划进行。另外,请确保您获得的
$id
正确。规则似乎没有问题,您确定您获得的
$id
和具有相同id的产品吗?我认为它应该是
'product\u name'=>'unique:products,product\u name',.$product->id',id'
$id是正确的。我检查了好几次我使用了你的两种解决方案,但是我收到的相同消息
产品名称已经被采纳
你在数据库中有一列作为
产品名称
列吗?是的..名称没有问题