Как сделать запрос на выборку данных с нескольких столбцов одной таблицы из коллекции Laravel
Имеется модель Author и таблица authors с двумя полями author_surname и author_name.
При поиске по каталогу авторов нужно сделать выборку по фамилии или по имени автора в таблице.
Вопрос такой с помощью какого метода в коллекции можно сделать выборку типа SELECT * FROM authors WHERE author_surname=$author_surname OR author_name=$author_name
В query builder можно использовать два метода DB::select('author')->where('author_surname', '=', $author_surname)->orWhere('author_name', '=', $author_name).
Но как это сделать используя коллекции полученную через модель Author ведь там есть только метод where().
AuthorController.php
public function index(Request $request)
{
if (!empty($request->sort)) {
$authors = Author::all()->sortBy('author_surname');
} elseif (!empty($request->search)) {
$authors = Author::all()->where('author_surname', $request->search);
} else {
$authors = Author::paginate(15);
}
return view('authors.index', compact('authors'));
}
В файле authors.index пагинация, сортировка по фамилии автора и должен присутствовать поиск по фамилии или имени автора.
Ответы (1 шт):
Метод orWhere() был правильным решением, стоило только убрать метод all() и последним методом вызвать get()
$authors = Author::where('author_surname', $request->search)->
orWhere('author_name', $request->search)->get();