更新数据时忽略唯一验证

时间:2018-05-16 05:09:39

标签: php laravel laravel-5

在我的产品表中product_name是唯一的。如果我在更新数据时未更新产品名称,则不会让我更新产品信息并显示以下错误:

  

产品名称已经采取

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

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');
  }

2 个答案:

答案 0 :(得分:2)

如果您只使用unique验证规则,则可以使用:

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

或者,如果您还有其他验证规则,请使用以下方式:

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

但在使用之前请加use Illuminate\Validation\Rule;

答案 1 :(得分:0)

确保您使用使用Illuminate \ Http \ Request ...并使用正确的表字段名称和输入名称。



$property = 201609;
var_dump($query[0]->$property);