在laravel罐上使用like';不显示日期搜索

在laravel罐上使用like';不显示日期搜索,laravel,eloquent,Laravel,Eloquent,我想搜索基于数据的nama_kegiatan或tanggal_kegiatan,这两个名称构成我的表字段,我的控制器中的代码如下: public function search(Request $request){ $cari = $request->search; $caritanggal = date($request->datekeg); $infokeg = Infokeg::where(function ($query) use ($cari) { $query-&

我想搜索基于数据的nama_kegiatan或tanggal_kegiatan,这两个名称构成我的表字段,我的控制器中的代码如下:

public function search(Request $request){
$cari = $request->search;
$caritanggal = date($request->datekeg);
$infokeg = Infokeg::where(function ($query) use ($cari) {
    $query->where('nama_kegiatan','like',"%$cari%")->get();
})->orWhere(function($query) use ($caritanggal) {
    $query->where('tanggal_kegiatan', $caritanggal)->get();;   
})->paginate(10);

return view('infokeg/infokeg', ['infokeg' => $infokeg]);
}
当我在nama_kegiatan上使用like时,tanggal_kegiatan不起作用,只显示所有数据,但当我从nama_kegiatan中删除like时,它起作用,但我无法使用like搜索nama_kegiatan,那么如何解决它呢?

也许你可以尝试在查询后获得()所有结果?比如

$infokeg = Infokeg::where('name_kegiatan','LIKE','%'.$cari.'%')->orWhere('tanggal_kegiatan',$caritanggal)->get();
在我看来,如果没有弄错的话,get()和paginate()不能同时使用。如果在所有结果之后需要分页,可以手动创建分页器。大概希望这将帮助你,如果有任何错误,请纠正我。谢谢

也许您可以尝试在查询后获取()所有结果?比如

$infokeg = Infokeg::where('name_kegiatan','LIKE','%'.$cari.'%')->orWhere('tanggal_kegiatan',$caritanggal)->get();

在我看来,如果没有弄错的话,get()和paginate()不能同时使用。如果在所有结果之后需要分页,可以手动创建分页器。大概希望这将帮助你,如果有任何错误,请纠正我。谢谢

如果要查看数据库中运行的内容,请在查询后使用dd(DB::getQueryLog())查看到底运行了哪些查询

$infokeg = Infokeg::where('nama_kegiatan','like', "%" . $cari ."%")
    ->orWhere(function($query) use ($caritanggal) {
            $query->where('tanggal_kegiatan', $caritanggal);   
        })->paginate(10);

如果要查看数据库中运行的内容,请在查询后使用dd(DB::getQueryLog())查看到底运行了哪些查询

$infokeg = Infokeg::where('nama_kegiatan','like', "%" . $cari ."%")
    ->orWhere(function($query) use ($caritanggal) {
            $query->where('tanggal_kegiatan', $caritanggal);   
        })->paginate(10);

只要把它变成if状态

public function search(Request $request)
{
$cari = $request->search;
$caritanggal = $request->datekeg;
if (isset($cari)) {
    $infokeg = Infokeg::where('nama_kegiatan', 'like', '%'.$cari.'%')
    ->paginate(5);
}elseif (isset($caritanggal)) {
    $infokeg = Infokeg::where('tanggal_kegiatan', 'like', '%'.$caritanggal.'%')
    ->paginate(5);
}elseif (isset($cari)&&isset($caritanggal)) {
    $infokeg = Infokeg::where('nama_kegiatan', 'like', '%'.$cari.'%')
    ->orWhere('tanggal_kegiatan', 'like', '%'.$caritanggal.'%')
    ->paginate(5);
}
return view('/admin/infokeg/infokeg', ['infokeg' => $infokeg]);
}

只要把它变成if状态

public function search(Request $request)
{
$cari = $request->search;
$caritanggal = $request->datekeg;
if (isset($cari)) {
    $infokeg = Infokeg::where('nama_kegiatan', 'like', '%'.$cari.'%')
    ->paginate(5);
}elseif (isset($caritanggal)) {
    $infokeg = Infokeg::where('tanggal_kegiatan', 'like', '%'.$caritanggal.'%')
    ->paginate(5);
}elseif (isset($cari)&&isset($caritanggal)) {
    $infokeg = Infokeg::where('nama_kegiatan', 'like', '%'.$cari.'%')
    ->orWhere('tanggal_kegiatan', 'like', '%'.$caritanggal.'%')
    ->paginate(5);
}
return view('/admin/infokeg/infokeg', ['infokeg' => $infokeg]);
}

它不起作用,兄弟,这个代码和我的代码完全一样,嗯,我只能想可能是日期格式错误或者查询有问题。也许你可以试试这个查询,看看是否是你想要的查询。如果您想查看查询,只需将get()更改为toSql(),并添加$infokeg。如果日期有问题,那么也许你可以尝试使用Carbon代替date()。它不起作用,兄弟,这段代码与我的代码完全一样,嗯,我只能想可能是日期格式错误或者查询有问题。也许你可以试试这个查询,看看是否是你想要的查询。如果您想查看查询,只需将get()更改为toSql(),并添加$infokeg。如果日期有问题,那么您可以尝试使用碳代替日期()。