Laravel 如何从数据库中的多个列获取搜索查询
我有一个搜索表单,可以从名为books的表中获取信息 现在我正在使用这个控制器Laravel 如何从数据库中的多个列获取搜索查询,laravel,laravel-5.2,Laravel,Laravel 5.2,我有一个搜索表单,可以从名为books的表中获取信息 现在我正在使用这个控制器 public function search(Request $request) { $keyword = $request->input('keyword'); $query = Book::where('judul', 'LIKE', '%' . $keyword . '%'); $book_list = $query->paginate(5); $paginatio
public function search(Request $request)
{
$keyword = $request->input('keyword');
$query = Book::where('judul', 'LIKE', '%' . $keyword . '%');
$book_list = $query->paginate(5);
$pagination = $book_list->appends($request->except('page'));
$total_book = $book_list->total();
return view('dashboards.index', compact('book_list', 'keyword', 'pagination', 'total_book'));
}
问题是我从请求中获得的数据仅适用于judul。如果输入关键字搜索指向搜索写入者或发布者,则只显示空结果
我希望搜索表单能够从名为writers和publisher
有什么方法可以从多列中获取数据吗 您可以通过多种方式执行条件查询 1.您可以使用: 2.使用: 3.执行以下操作:
$books = Book::query();
if ($request) {
$books = $books->where('judul', 'LIKE', '%' . $keyword . '%');
}
$books = $books->get();
你可以用orwhere来填充这个,就像这样
Book::where(function ($query) use($keyword) {
$query->where('judul', 'like', '%' . $keyword . '%')
->orWhere('writters', 'like', '%' . $keyword . '%');
})
->get();
我希望它能帮到你。使用搜索插件会让事情变得更简单@SapneshNaik hi非常感谢您的建议,我会尝试一下,但由于我是laravel和PHP的begginer,我需要用“手动”方法解决这个问题。@YudyAnanda您的意思是您需要将同一关键字与编写者和发布者匹配吗?@MKhalidJunaid hi,我的意思是我需要seach表单能够从其中3个获取数据(专栏:judul,publisher,Writer)不仅仅是judul谢谢你的回答,那么我应该更改哪部分?看起来还是只获取judul,其他专栏(Writer和publisher)呢?@YudyAnanda如果这些专栏在同一个表中,这些示例将获取所有的专栏。我想你添加了类似于
select()
如果您没有获得某些列,请转到查询。我尝试了$books=Book::query();…
但在Macroable.php第74行:方法paginate不存在。@YudyAnanda我刚刚在5.3和5.5上尝试了这个方法,效果很好。对于5.2,您可以尝试newQuery()
而不是query()
$books = Book::query();
if ($request) {
$books = $books->where('judul', 'LIKE', '%' . $keyword . '%');
}
$books = $books->get();
Book::where(function ($query) use($keyword) {
$query->where('judul', 'like', '%' . $keyword . '%')
->orWhere('writters', 'like', '%' . $keyword . '%');
})
->get();