首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 6验证多列

Laravel 6验证多列
EN

Stack Overflow用户
提问于 2021-04-11 21:54:37
回答 1查看 26关注 0票数 0

使用以下代码在Laravel 6中创建和更新记录,如何添加组合了'iso‘和'division’列的唯一验证,对于update和create都必须唯一?另外,如何自动更新'updated_at‘列而不’触摸‘它?

代码语言:javascript
复制
 public function upsert(Request $request)
    {
        $this->authorize('manage','App\Admin\Division');
        $this->validate($request,[
                'records.iso' => 'required|regex:/^[A-Z]{2}$/',
                'records.division' => 'required|min:2|max:3',
                'records.remarks' => 'min:2|max:255|string|nullable',
        ],
           [ 'records.iso.required'=>'Country iso Requied',
             'records.iso.regex'=>'Country iso format : AA',
             'records.division.required'=>'Division Code must entered',
             'records.division.min'=>'Division Code minimum 2 characters',
             'records.division.max'=>'Division Code maximum 3 characters',
            ],
        );
        $validatedData = $request->records;
        if($validatedData['id']){   // have id, old record -> update       
            Division::where('id', $validatedData['id'])->update($validatedData);
            //*******/ To correct updated_at no auto updated
            $results = Division::find($validatedData['id']);
            $results->touch();
            //****** */ End of correction
        }else{ // no id -> create record
            $validatedData['auth'] = Auth::id();
            $results = Division::create($validatedData);
        }
        return  ['divisions' => $results];
    }
EN

回答 1

Stack Overflow用户

发布于 2021-04-11 22:09:40

所有的验证规则都适用于每个字段,我认为你可以做一个foreach来解决这个问题并压缩代码,类似于:

代码语言:javascript
复制
foreach ($records  as $key => $record) {
  $fields['record'.$key] = 'iso', 'division';
  $rules['record'.$key] = 'required|min:2';
}
  $validator = Validator::make($fields, $rules);

在规则数组中,您可以放置所有共享规则,但在此之后您必须创建其他复杂的验证规则,所以我认为您现在的验证已经很好了。

对于updated_at字段,使用updateOrCreate

代码语言:javascript
复制
$results = Division::updateOrCreate(
   ['id', $validatedData['id'],
   [$validatedData]
);

根据您的代码修改上面的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67045801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档