Laravel Slug更新记录

时间:2018-09-28 05:27:11

标签: laravel validation slug

如果值未更改,我想忽略该提示。我现在每次更新表单时都会收到此错误。

这是我对验证的要求。

命名空间App \ Http \ Requests \ Admin;

使用Illuminate \ Foundation \ Http \ FormRequest;

Class ProductInsertFormRequest扩展FormRequest {     / **      *确定用户是否有权发出此请求。      *      * @返回布尔      * /     公共功能authorize()     {         返回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 :(得分:0)

要在检查唯一性时忽略数据库表中的特定行,您需要将unique()规则与ignore()函数一起使用

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

这将在“产品”表的“子弹”列中检查唯一性,除了具有“此子弹”的特定行之外

答案 1 :(得分:0)

  1. Rule中的Ignore()函数仅适用于id。
  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)]
    ];
     }