Php Laravel过滤所有列中的值

Php Laravel过滤所有列中的值,php,laravel,eloquent,Php,Laravel,Eloquent,我知道如何按给定值过滤列。但是如何按给定值过滤所有列呢。例如,我有一个名为“category”的列,其中用户应该能够使用相同的搜索栏过滤类别 比如: public function getBooks($input) { $books= Book::where('book_name', 'LIKE', '%' . $input . '%')->get(); return Response::json($books); } 谢谢 大多数数据库不支持同时搜索所有列。恐怕您必须将

我知道如何按给定值过滤列。但是如何按给定值过滤所有列呢。例如,我有一个名为“category”的列,其中用户应该能够使用相同的搜索栏过滤类别

比如:

public function getBooks($input)
{
    $books= Book::where('book_name', 'LIKE', '%' . $input . '%')->get();
    return Response::json($books);
}

谢谢

大多数数据库不支持同时搜索所有列。恐怕您必须将所有列链接在一起:

$books = Book::where('all_columns', 'LIKE', '%' . $input . '%')->get();

大多数数据库不支持同时搜索所有列。恐怕您必须将所有列链接在一起:

$books = Book::where('all_columns', 'LIKE', '%' . $input . '%')->get();

您必须为每个列添加一个
where
子句,如@JoelHinz所建议的。为了简化一些事情,可以使用数组和循环:

$books = Book::where('book_name', 'LIKE', '%' . $input . '%')
    ->orWhere('another_column', 'LIKE', '%' . $input . '%')
    // etc
    ->get();
甚至可以使用架构生成器从表中检索所有列名:

$query = Book::query();
$columns = ['book_name', 'foo', 'bar'];
foreach($columns as $column){
    $query->orWhere($column, 'LIKE', '%' . $input . '%');
}
$books = $query->get();

您必须为每个列添加一个
where
子句,如@JoelHinz所建议的。为了简化一些事情,可以使用数组和循环:

$books = Book::where('book_name', 'LIKE', '%' . $input . '%')
    ->orWhere('another_column', 'LIKE', '%' . $input . '%')
    // etc
    ->get();
甚至可以使用架构生成器从表中检索所有列名:

$query = Book::query();
$columns = ['book_name', 'foo', 'bar'];
foreach($columns as $column){
    $query->orWhere($column, 'LIKE', '%' . $input . '%');
}
$books = $query->get();

还可以使用此覆盖函数将条件应用于所有行

$columns = Schema::getColumnListing('books');

Now Book Model将只提供符合您要求的结果。

您还可以使用此覆盖功能将条件应用于所有行

$columns = Schema::getColumnListing('books');
现在,书本模型将只提供符合您需求的结果