ScanDoctorValidate 验证类的 checkDeviceBind 场景应用

$param = Request::instance()->param();
$validate = new ActivityValidate();
if ( !$validate->scene('checkSave')->check( $param ) )
{
return $this->errorResponse( $validate->getError() );
}

数据量少的数据表单列出来优化foreach数据库查询

$data = DeviceBuy::where('status','in',[1,2])
                 ->where('scan_doctor_id',$user_info['id'])
                 ->order('create_time desc')
                 ->field('id,device_id,pay_type,status,create_time,buy_log_id,scale')
                 ->select();
             $column_id = !empty( $authList ) ? array_column($data,'id') : [];
             $column_buy_log_id = !empty( $authList ) ? array_column($data,'buy_log_id') : [];
             //数据量极少的表建议不进行whereIn查询,但是field里面必须有id索引字段
             $device = DeviceModel::order('id desc')->field('id,name,cover')->select();
             //转换索引 DeviceModel => DeviceBuy       id => device_id
             $new_device = [];
             foreach ($device as  $v){
                 $new_device[ $v['id'] ] = $v;
             }
             $device_bind = DeviceBind::where('device_buy_id','in',$column_id)->select();
             //转换索引  以DeviceBind表的device_buy_id建索引;循环DeviceBuy表的时候判断   $device_bind[ $v['id'] ] 是否存在,若存在则是关联信息
             $new_device_bind = [];
             foreach ($device_bind as  $v){
                 $new_device_bind[ $v['device_buy_id'] ] = $v;
             }
             $device_buy_log = DeviceBuyLog::where('id','in',$column_buy_log_id)->select();
             //转换索引
             $new_device_buy_log = [];
             foreach ($device_buy_log as  $v){
                 $new_device_buy_log[ $v['id'] ] = $v;
             }
             foreach ($data as $k => $v){
                 $device_attr = empty( $new_device[ $v['device_id'] ] ) ?  [] : $new_device[ $v['device_id'] ];
                 if( $device_attr ){
                     $data[$k]['name'] = $device_attr['name'];
                     $data[$k]['cover'] = $device_attr['cover'];
                 }
                 $data[$k]['need_bind'] = empty( $new_device_bind[ $v['id'] ] ) ? true : false;
                 $data[$k]['buy_log_money'] = 0;
                 $devicebuylog = empty( $new_device_buy_log[ $v['buy_log_id'] ] ) ? [] : $new_device_buy_log[ $v['buy_log_id'] ];
                 if( $devicebuylog ){
                     $data[$k]['buy_log_money'] = $devicebuylog['money'];
                     $data[$k]['scale_one'] = $devicebuylog['scale_one'];
                     $data[$k]['scale_two'] = $devicebuylog['scale_two'];
                 }    
 }

发表评论

电子邮件地址不会被公开。 必填项已用*标注