【问题标题】:how to implement laravel validation unique in UpdateRequest custom?如何在 UpdateRequest 自定义中实现唯一的 laravel 验证?
【发布时间】:2021-04-16 23:39:28
【问题描述】:

我在文件 UpdateAnimeRequest 中有一个独特的规则,我想实现一个独特的规则,如下所示: https://laravel.com/docs/8.x/validation#rule-unique

问题是如果我想更新而不更改标题然后出现唯一错误,当用户不想更改标题输入字段时如何防止出现此错误?

这是我的自定义请求文件的内容:

<?php

namespace App\Http\Requests;

use App\Rules\ValidGenre;
use App\Rules\ValidWord;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Gate;

class UpdateAnimeRequest extends FormRequest
{
    public function rules()
    {
        return [
            'title' => 'required|unique:animes,title|max:25',
            'genres' => [
                'required', new ValidGenre(), new ValidWord()
            ],
            'status' => 'nullable|regex:/1/',
            'link' => 'nullable|url',
            'motivasi' => 'nullable|regex:/^[a-zA-Z0-9_\s\-]*$/',
        ];
    }

    public function authorize()
    {
        return Gate::allows('anime_access');
    }
}

有人可以帮我在自定义请求中实现忽略自我吗?

【问题讨论】:

  • 为什么要忽略?

标签: php laravel validation unique


【解决方案1】:

首先如果你想忽略 self 那么你必须有anime_id 来知道它是否有self 那么规则可以是

'title' => ['required', "max:25", Rule::unique('animes', 'title')->ignore($this->anime->id, 'id')],

【讨论】:

  • 我试试 dd $this->anime 和输出 null?
  • 不,这只是一个例子,这意味着您的 UpdateAnimeRequest 需要知道该动画是否存在(将 $this-&gt;anime-&gt;id 替换为您当前的动画 id)
猜你喜欢
  • 2021-11-30
  • 2019-12-10
  • 2021-01-23
  • 2014-12-16
  • 1970-01-01
  • 2020-06-19
  • 2020-09-10
  • 2018-10-29
  • 2018-04-09
相关资源
最近更新 更多