1 回答
TA贡献1834条经验 获得超8个赞
试试这个
例如,如果找到单词,则使用类似搜索,然后第一个条件为真
如果用户设置了开始日期和截止日期,则第二个条件为 true
如果用户同时填写(单词和日期),则您的两个条件都为真。
如果你没有填写任何值,那么只得到前10(十)个帖子(没有条件匹配)
public function search(Request $request){
$posts = Post::query();
$from = $request->from;
$to = $request->to;
$word = trim($request->word);
if($word && !empty($word)){
$posts->where('title', 'LIKE', '%' . $word . '%')
->orWhere('content', 'LIKE', '%' . $word . '%')
->orWhere('subtitle', 'LIKE', '%' . $word . '%');
}
if(!empty($from) && !empty($to)){
$posts->whereBetween('created_at', [$from, $to]);
}
$searched = $posts->paginate(10);
return view('page.search', compact('searched', 'from', 'to'));
}
- 1 回答
- 0 关注
- 110 浏览
添加回答
举报