Laravel Slug Update Record - PullRequest
       11

Laravel Slug Update Record

0 голосов
/ 28 сентября 2018

Я хочу игнорировать слаг, если значение не изменилось.В настоящее время я получаю эту ошибку при каждом обновлении формы.

Это мой запрос на проверку.

namespace App \ Http \ Requests \ Admin;

use Illuminate \ Foundation \ Http \ FormRequest;

class ProductInsertFormRequest extends FormRequest {/ ** * Определить, имеет ли пользователь право на созданиеэтот запрос.* * @return bool * / публичная функция authorize () {return true;}

/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'title'=>'required',
        'regularPrice'=>'required',
        'slug'=>'required|alpha_dash|min:5|max:255|unique:products,slug',
    ];
}

}

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018
  1. Функция Ignore () в правиле работает только с идентификатором.
  2. Поэтому я изменил код следующим образом:

    public function rules()
    {
    $decrypted = Crypt::decrypt($this->id);
    //$slug = Product::whereId($decrypted)->pluck('slug')->first();
    
    //return dd($slug);
     return [
        'title'=>'required',
        'regularPrice'=>'required',
        'slug' => ['required', 'alpha_dash', 'min:5', 'max:255', Rule::unique('products', 'slug')->ignore($decrypted)]
    ];
     }
    
0 голосов
/ 28 сентября 2018

, чтобы игнорировать определенную строку в таблице базы данных при проверке уникальности, вам нужно использовать правило unique() с ignore() функцией

'slug' => ['required', 'alpha_dash', 'min:5', 'max:255', Rule::unique('products', 'slug')->ignore($this->product->slug)

Это будет проверять уникальность в столбце 'slug' 'products'таблица, кроме этой конкретной строки, которая имеет' этот слаг '

...