首页 > 解决方案 > Laravel - 如何使用规则请求创建唯一的两个字段

问题描述

在 Laravel-8 中,我有这个独特的规则请求验证:

public function rules()
{
    return [
        //company
        'companyName' => [
            'required',
            'string',
            'min:3',
            'max:100',
        ],
        'country_id' => [
            'nullable',
        ],
      ];
 }

如何使 companyName 相对于 country_id 是唯一的?

谢谢

标签: laravelvalidationrules

解决方案


您可以为您的规则集创建自定义验证规则。

我建议你CountryhasMany()Company

public function rules()
{
    return [
        //company
        'companyName' => [
            'required',
            'string',
            'min:3',
            'max:100',
            function($attribute, $value, $fail) {
                $country = Country::findOrFail(request()->get('country_id'));
                
                if(!$country->companies()->whereName(request()->get('companyName'))->get()->isEmpty()) {
                    $fail('Woops, there\'s a country with this name. Type another one, please :)');
                }
            },
        ],
        'country_id' => [
            'nullable',
        ],
      ];
 }

在此处阅读有关自定义 Laravel 验证规则的更多信息:https ://laravel.com/docs/8.x/validation#custom-validation-rules


推荐阅读