removeRelatedFiles($page, $assignedFiles); // allow uploading only on created pages if (!$page->id || !$files[0]) { return; } // find or create new directory for files assigned to content $directory = Directory::firstOrCreate([ 'name' => '.content_files', 'hidden' => true ]); $data = new \stdClass(); $data->directoryId = $directory->id; $fileModel = app(File::class); foreach ($files as $file) { if (!$file) { continue; } $uploaded = $fileModel->upload($file, $data); // add assignement ContentHasFile::create([ 'file_id' => $uploaded['id'], 'content_id' => $page->id ]); } } /** * Delete files from association * * @param Content $page * @param $assignedFiles */ private function removeRelatedFiles(Content $page, $assignedFiles) { $allFiles = $page->files() ->whereNotIn('id', array_keys($assignedFiles)) ->get(); foreach ($allFiles as $file) { ContentHasFile::where('content_id', $page->id) ->where('file_id', $file->id) ->delete(); } } }