php - Laravel 过滤所有列中的值

标签 php laravel eloquent

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/

相关文章:

php - 使用表 1 中的信息从表 2 中获取信息

php - 如何在 PHP 中将 header 与正文一起输出?

php - Laravel Auth::attempt() 总是假的?

php - 将数据添加到默认工厂 - laravel 5.4

php - Laravel 中的日期为 0000-00-00

php - 如何在 Laravel Eloquent Collection 的each方法中使用break或continue?

mysql 的 php 表单问题

php - 通过php动态设置mysql中的join类型

php - Laravel 4.2 模型突变器

php - 如何在 Lumen 5.5 中使用 .env 来使用多个数据库连接?