Laravel 5.6在何处搜索

Laravel 5.6在何处搜索,laravel,Laravel,这也在起作用。但问题是当我并没有搜索任何东西时,并没有结果。我是说项目?startdate=&enddate=&search=那里没有结果。我就是不明白。为什么 $search = $request->get('search'); $startdate = $request->input('startdate'); $enddate = $request->input('enddate'); $projects = $projects -

这也在起作用。但问题是当我并没有搜索任何东西时,并没有结果。我是说项目?startdate=&enddate=&search=那里没有结果。我就是不明白。为什么

$search = $request->get('search');
$startdate = $request->input('startdate');
$enddate = $request->input('enddate');
        $projects = $projects
            ->where(function ($query) use ($search) {
                $query->orWhere('lastname', 'like', '%'.$search.'%')
                    ->orWhereRaw("(firstname) LIKE '%$search%'")
                    ->orWhereRaw("(register) LIKE '%$search%'");
            })
            ->whereBetween('created_at', [$startdate, $enddate])
            ->orderBy("created_at", 'desc')
            ->paginate(10);
        return view('projects.index', compact('projects'));

不搜索任何内容时,$search、$startdate和$enddate为空。 whereBetween不适用于空值

仅当变量具有值时才向查询添加约束:

$query=$projects->query; 如果是null$search吗{ $query->wherefunction$query使用$search{ $query->orWhere'lastname'、'like'、'%'。$search'% ->或其中的'firstname'、'like'、'%'。$search.'% ->或其中的'register'、'like'、'%'.$search.'%'; } } 如果是空的$startdate&!是null$enddate吗{ $query->whereBetween'created_at',[$startdate$enddate] } $projects=$query->orderBycreated_位于'desc'->paginate10; 不要使用->或WhereRawFirstName之类的内容,如“%$search%”。
这是一个巨大的安全风险:

可能有两种方法:

根据空值检查两个日期变量,然后 将其附加到查询筛选器

$startdate = $request->input('startdate');
$enddate = $request->input('enddate');

if(!is_null($startdate) && !is_null($enddate)) {
    $query->whereBetween('created_at', [$startdate, $enddate]
}
如果中未提供,则可以将默认值设置为日期范围 请求


你希望它会回来什么?我的回答中添加了一个重要的安全警告,请看一看。哦,我以前听说过SQL注入。天哪,先生,真的非常感谢你。
/* if startdate value is null, it will set default date, as 1 year back from current date */
$startdate = $request->input('startdate', Carbon::now()->subYears(1)); 

/* if enddate value is null, it will set default date, as current date */
$enddate = $request->input('enddate', Carbon\Carbon::now());