我有搜索表单从名为books的表中获取信息。
现在我正在使用这个控制器
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 。如果输入关键字搜索发送给搜索撰写者或发布者
,则只显示空结果我希望搜索表单能够从名为 writters 和发布者
的其他列中获取数据是否有任何方法可以从多列获取数据?
答案 0 :(得分:7)
您可以使用orwhere来填充此内容,例如
Book::where(function ($query) use($keyword) {
$query->where('judul', 'like', '%' . $keyword . '%')
->orWhere('writters', 'like', '%' . $keyword . '%');
})
->get();
我希望它可以帮到你。
答案 1 :(得分:1)
您可以通过多种方式执行条件查询。
1。您可以使用when()
:
Book::when($keyword, function ($q) use ($keyword) {
return $q->where('judul', 'LIKE', '%' . $keyword . '%');;
})
->get();
2。使用where closure:
Book::where(function($q) use ($keyword, $request) {
if ($request) {
$q->where('judul', 'LIKE', '%' . $keyword . '%');
}
})
->get();
3. 执行此操作:
$books = Book::query();
if ($request) {
$books = $books->where('judul', 'LIKE', '%' . $keyword . '%');
}
$books = $books->get();