Laravel 唯一验证必须在验证时包含附加文本

Laravel unique validation must include appended text when validating

我正在使用 Laravel 租赁包,其中在我的数据库中有一个 domains table 以及此 [=39] 中 domain 列中的每个值=] 附加 .test.co.uk.

当用户在表单中输入 URL 时,他们会看到一个输入元素(如上所示),他们在其中输入 URL/Domain 但 .test.co.uk 已经附加所以他们唯一需要输入的是之前的文字,例如他们将输入 johnsmith 并在 domain 列中存储 johnsmith.test.co.uk. 我遇到的问题是我需要对此列的验证是唯一的,但也包括 .test.co.uk在执行验证时,它会查看存储在 table 中的值,因为如果用户输入 johnsmith 并且当前在 domains table 中有一条记录,其中值是 johnsmith.test.co.uk 那么验证将通过,但在这种情况下我需要验证失败。我目前正在使用扩展 FormRequest class 的 Request class 并且有这个:

public function rules()
{
   return [
       'url' => 'required|string|unique:domains,domain',
   ];
}

我也尝试过规则对象,但我认为规则对象不是解决此问题的正确方法。有没有方便的“Laravel”方式来做到这一点?

在您的请求中 class 使用 prepareForValidation()

文档:https://laravel.com/docs/7.x/validation#prepare-input-for-validation

protected function prepareForValidation()
{
    $this->merge([
        'url' => $this->url . '.test.co.uk',
    ]);
}