Laravel - 如何使用规则请求制作唯一的两个字段

标签 laravel validationrules

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

public function rules()
{
    return [
        //company
        'companyName' => [
            'required',
            'string',
            'min:3',
            'max:100',
        ],
        'country_id' => [
            'nullable',
        ],
      ];
 }
如何使 companyName 相对于 country_id 唯一?
谢谢

最佳答案

您可以为您的规则集创建自定义验证规则。
我建议你的 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

关于Laravel - 如何使用规则请求制作唯一的两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69055305/

相关文章:

laravel - laravel中api中间件的作用是什么

php - 安装 Herd 并返回 Valet 后为 502

php - 如何在 laravel 验证中验证文件是 "real file"

mysql - Laravel 4.2 日期范围内的多个查询

c# - 如何将 ValidationRules 添加到 WPF 绑定(bind)内联?

c# - 如何从 FluentValidation 获取验证规则

wpf - 不同级别的多个字段之间的验证

javascript - Yii2 在whenClient 中将变量连接到字符串

Laravel Blade 模板 - 如何在 foreach 循环中使用增量变量

c# - 如何验证 WPF 中的数据并设置默认值?