public function index() { $books = Book::with('Author')->where(function ($query) { $min_price = \Request::has('min_price') ? \Request::get('min_price') : null; $max_price = \Request::has('max_price') ? \Request::get('max_price') : null; $authors = \Request::has('authors') ? \Request::get('authors') : []; if (isset($min_price)) { $query->where('price', '>=', $min_price); } if (isset($max_price)) { $query->where('price', '<=', $max_price); } if (isset($authors)) { $query->where(function ($q) { $input_authors = \Request::has('authors') ? \Request::get('authors') : []; // $books_all = \App\Book::with('Author')->get(); //перебираем все чекнутые боксы foreach ($input_authors as $input_author) { // автор == выборка из авторов где Ид = чекнутому боксу. Первый $author = \App\Author::with('books')->where('id', '=', $input_author)->first(); // выборка внутри выбранного автора по книгам foreach ($author->books as $author_book) { //запрос Айди книги == айди книг у этого автора $q->orWhere('id', '=', $author_book->id); } } }); } })->paginate(2); $authors_list = \App\Author::all(); return view('books.list', compact('books', 'authors_list')); }