fields = $exportFields; $this->data = $data; $this->tableName = $tableName; } //数组转集合 public function collection() { return new Collection($this->createData()); } //业务代码 public function createData() { // 获取表字段备注 $rowTableFieldByComment = (new CustomFormField)->getRowTableFieldsByComment($this->tableName); // 筛选需要导出的字段设置 $exportFieldsByComment = []; foreach ($rowTableFieldByComment as $key => $value) { if (in_array($key, $this->fields)) { $exportFieldsByComment[$key] = $value; } } // 表头 $header = array_values($exportFieldsByComment); $flip = array_flip($this->fields); $newList = []; foreach ($this->data as $info) { // 取原始查询数据中指定的几个字段数据 $temp = array_intersect_key($info, $flip); $newList[] = $this->intToSting($temp); } array_unshift($newList, $header); //插入表头 return $newList; } /** * 枚举型数据转换 */ public function intToSting($fields) { $model = CustomForm::tableToModel($this->tableName); // 模型中定义$intToString静态方法,实现枚举型的int转字符串 $array = $model::$intToString; foreach ($fields as $key => &$item) { if (isset($array[$key])) { if (is_array($array[$key])) { // 枚举 $item = $array[$key][$item]; } if (is_int($array[$key])) { // 数据字典 $item = ParameterDetail::where('id', $item)->value('value'); } } } return $fields; } }