public function getBooks($input)
{
$books= Book::where('book_name', 'LIKE', '%' . $input . '%')->get();
return Response::json($books);
}
我知道如何按给定值过滤列。但是如何按给定值过滤所有列。例如,我有一个名为“类别”的列,用户应该能够在其中使用相同的搜索栏来过滤类别。
类似于:
$books = Book::where('all_columns', 'LIKE', '%' . $input . '%')->get();
谢谢!
最佳答案
您必须像@JoelHinz 建议的那样为每一列添加一个 where
子句。为了稍微简化一下,您可以使用数组和循环:
$query = Book::query();
$columns = ['book_name', 'foo', 'bar'];
foreach($columns as $column){
$query->orWhere($column, 'LIKE', '%' . $input . '%');
}
$books = $query->get();
或者甚至使用架构构建器从您的表中检索所有列名:
$columns = Schema::getColumnListing('books');
关于php - Laravel 过滤所有列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28543166/