Игнорировать уникальную проверку при обновлении данных - PullRequest
0 голосов
/ 16 мая 2018

В моей таблице продуктов 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 голосов
/ 16 мая 2018

убедитесь, что вы используете используйте Illuminate \ Http \ Request ... с правильным именем поля таблицы и именем ввода.

$request->validate([
    'product_name' => 'required|unique:products,product_name,'.$product->id,
]);
0 голосов
/ 16 мая 2018

если вы используете только правило проверки 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; перед использованием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...