$rows ]); } public function search(Request $request) { $this->validate($request, [ 'query' => [ 'required' ] ]); $rows = Book::where('name', 'LIKE', '%' . $request->get('query') . '%')->paginate(15); return view('index', [ 'rows' => $rows ]); } public function add(Request $request) { return view('add', [ 'old' => array_filter($request->old('books', []), function($item) { return !empty($item['barcode']); }) ]); } public function save(Request $request) { $this->validate($request, [ 'location' => [ 'required' ] ]); $input = array_filter($request->get('books'), function($item) { return !empty($item['barcode']) && !empty($item['name']); }); $this->getValidationFactory()->make($input, [ '*.barcode' => [ 'required' ], '*.name' => [ 'required' ] ]); $location = Location::firstOrCreate([ 'name' => trim($request->get('location')) ]); foreach ($input as $item) { $book = Book::create([ 'location_id' => $location->id, 'barcode' => $item['barcode'], 'name' => $item['name'] ]); $authors = []; foreach (Arr::get($item, 'authors') as $author) { $authors[] = Author::firstOrCreate([ 'name' => $author ]); } $authors = array_map(function($author) { return $author->id; }, $authors); $book->authors()->attach($authors); } } }