为了账号安全,请及时绑定邮箱和手机立即绑定

laravel 批量插入数据,后台该如何校验?

laravel 批量插入数据,后台该如何校验?

PHP
陪伴而非守候 2019-03-13 03:14:25
比如说前台传递过来一个json数组,里面每一个条目都是一条数据,在这种情况下改如何处理呢? <?php namespace App\Http\Requests; use App\User; use Illuminate\Foundation\Http\FormRequest; use Illuminate\Support\Facades\Auth; class StoreEvaluateStudentCourseRecordPost extends FormRequest { /** * Determine if the user is authorized to make this request. * * @return bool */ public function authorize() { return true; } /** * Get the validation rules that apply to the request. * * @return array */ public function rules() { return [ // 保存评价记录验证 '*.type' => 'required', '*.class_id' => 'required|integer', '*.course_id' => 'required|integer', '*.student_id' => 'required|integer', '*.quota_id' => 'required|integer', '*.evaluate_data' => 'required|max:191', ]; } /** * 配置验证器实例。 * * @param \Illuminate\Validation\Validator $validator * @return void */ public function withValidator($validator) { /** * 目前只有一个评价记录模板,每提交一种类型的评价需要新建一张表存储,由于评价类型传递字段的不可控性,我采取每一种评价类型建一张表的方式 * 验证: * student_course 老师对学生课程指标评价 对应的是evaluate_student_course_records 表 */ $validator->after(function ($validator) { $infos = $validator->getData(); if(!empty($infos) && isset($infos[0]) && is_array($infos[0])){ // 多维数组上传 foreach ($infos as $info){ if(!empty($info['type']) && $info['type'] == 'student_course' && !empty($info['class_id']) && !empty($info['course_id']) && !empty($info['student_id']) && !empty($info['quota_id']) && !empty($info['evaluate_data']) ){ if(User::hasQuota(Auth::id(), $info['class_id'], $info['course_id'], $info['quota_id'])){ return true; } } } } $this->failedValidation($validator); // 让校验失败 }); } // public function validator(ValidationFactory $factory) // { // $data = $this->validationData(); // if(!empty($data) && is_array($data)){ // foreach ($data as $d ){ // $instance = $factory->make( // $d, $this->container->call([$this, 'rules']), // $this->messages(), $this->attributes() // ); // if (method_exists($this, 'withValidator')) { // $this->withValidator($instance); // } // $instance->validate(); // } // } // } }
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 523 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信