/*处理数据关联数据 * @param array $data 来源源数据 * @param object $model 关系数据模型 * @param string $dataField 来源数据的字段 * @param string $dataFieldForm 来源数据字段格式 number,string * @param string/array $field 返回的字段 * @param string $modelField 匹配的字段 * @param $orderByField 关系数据排序字段 * @param $desc 倒叙或者顺序 asc / desc * @return array */ function data_related(&$data,$model,$dataField,$modelField,$dataFieldForm="number",$field="relation",$orderByField="",$desc=""){ if(!$data){ return false; } $handle = []; foreach($data as &$v){ $handelField = $v[$dataField]; unset($v[$dataField]); if(!empty($handelField)){ if($dataFieldForm=='string'){ $handle = array_merge($handle,explode(",",$handelField)); $v[$dataField]=array_merge($handle,explode(",",$handelField)); }elseif($dataFieldForm=='number'){ $handle[]=$handelField; $v[$dataField]=$handelField; } } } if($orderByField&&$desc){ $relation = $model->whereIn($modelField,$handle)->orderBy($orderByField,$desc)->get(); }else{ $relation = $model->whereIn($modelField,$handle)->get(); } if($relation->count()>0){ $relationData=[]; $relation = $relation->toArray(); foreach($relation as $re){ $relationData[$re[$modelField]]=$re; } foreach($data as &$v){ if($v[$dataField]){ if(is_array($v[$dataField])){ foreach($v[$dataField] as $da){ if(isset($relationData[$da])){$v[$field][]=$relationData[$da];} } }elseif(is_numeric($v[$dataField])){ if(isset($relationData[$v[$dataField]])){ $v[$field][]=$relationData[$v[$dataField]]; } } }else{ $v[$field]=[]; } } }else{ foreach($data as &$v){ $v[$field]=[]; } } }
laravel 使用PHP连表查询
最新推荐文章于 2022-05-11 13:01:25 发布