path)]; //排除自己的文件夹 $folderPathArray = array_unique(array_diff($folderIds, [$folder->id])); $folders = Folder::query()->whereIn("id", $folderPathArray)->pluck("name", "id"); if($folders->isEmpty()){ $folder['folder_path']='/'; $folder['type']='folder'; $item[]=$folder; }else{ $folderPath = []; foreach($folderPathArray as $folderId) { $folderPath[] = $folders->get($folderId); } $folder['folder_path']=implode('/', $folderPath); $folder['type']='folder'; $item[]=$folder; } } return $item; } public function filesFormat(Collection $files) { $folderIds = []; foreach ($files as $file) { $folderIds = [...$folderIds, ...explode(",", $file->folder?->path)]; } $folders = Folder::query()->whereIn("id", array_unique(array_filter($folderIds)))->pluck("name", "id"); $items = []; foreach ($files as $file) { $fileDownloadResource = (new FileDownloadResource($file))->toArray(request()); $folderPath = []; foreach(array_filter(explode(",", $file->folder?->path)) as $folderId) { $folderPath[] = $folders->get($folderId); } $fileDownloadResource['folder_path'] = "/" . implode('/', $folderPath); $fileDownloadResource['type']='file'; $items[] = $fileDownloadResource; } return $items; } }