where('created_by', Auth::id()) // ensure matching user for access ->where('path', $folder) // ensure that the specified folder exists in the database ->firstOrFail(); // if none found, fail } else { // use root folder if $folder not passed in $folder = $this->getRoot(); } // get all files and folders where parent_id = root $files = File::query()->where('parent_id', $folder->id) // that are created by the current user ->where('created_by', Auth::id()) // that have not been deleted ->whereNull('deleted_at') // order by folders first ->orderByDesc('is_folder') // then order by creation date ->orderByDesc('created_at') // return x amount (default 8) ->paginate(8); $files = FileResource::collection($files); $ancestors = FileResource::collection([...$folder->ancestors, $folder]); $folder = new FileResource($folder); return Inertia::render('UserFiles', compact('files', 'folder', 'ancestors')); } // create new folder based on passed in StoreFolderRequest public function newFolder(StoreFolderRequest $request) { // get validated data $data = $request->validated(); // get parent folder from StoreFolderRequest $parent = $request->parent; // check for parent if (!$parent) { $parent = $this->getRoot(); } $file = new File(); $file->is_folder = 1; $file->name = $data['name']; $parent->appendNode($file); } public function upload(StoreFileRequest $request) { // get validated data $data = $request->validated(); // get parent folder from StoreFolderRequest dd ($data); } private function getRoot() { return File::query()->whereIsRoot()->where('created_by', Auth::id())->firstOrFail(); } }