/** * @param Request $request * @return $this|\Illuminate\Http\RedirectResponse */ public function loadFromFile(Request $request) { $validator = Validator::make($request->all(), ['file' => 'required'], ['required' => 'No file provided']); if ($validator->fails()) { return redirect()->back()->withErrors($validator); } else { $contents = file($request->file('file')->getRealPath()); try { DB::beginTransaction(); foreach ($contents as $lineNumber => $line) { $record = array_combine(['subject', 'text', 'created_at'], str_getcsv($line)); $recordsValidator = Validator::make($record, BlogRecordRequest::getValidationRules()); if ($recordsValidator->fails()) { throw new \Exception(); } else { $br = new BlogRecord($record); $br->save(); } } DB::commit(); return redirect()->back(); } catch (\Exception $e) { DB::rollBack(); return redirect()->back()->withErrors(new MessageBag(['Line number' => $lineNumber])); } } }