如何制作所需的几个字段之一?

Ben*_*ict 6 php validation laravel laravel-validation

我的Eloquent模型由30个字段组成.

验证规则:

  1. 第一个字段是必需的
  2. 在其他29个字段中,至少需要一个字段.

检查Laravel 5.5的文档,我发现required_without_all验证规则非常相关.编写上述验证规则的一种方法是在29个字段中的每一个中指定required_without_all:field1,.....,field28(即除了第一个和给定字段之外的其他字段)

但是,这需要在除第一个字段之外的所有字段的验证规则中编写28个字段名称.有没有更简单,非冗余的方法?

Ale*_*nin 3

您仍然可以使用,但为了保持其可维护性,您可以在相关类required_without_all中执行类似的操作:Request

public function rules()
{
    $rules = [
        'name' => 'required',
        'email' => 'required|email'
    ];

    $fields = collect(['field1', 'field2', ...., 'field29']);

    foreach ($fields as $field) {
        $rules[$field] = 'required_without_all:' . implode(',', $fields->whereNotIn(null, [$field])->toArray());
    }

    return $rules;
}
Run Code Online (Sandbox Code Playgroud)