gpt4 book ai didi

laravel - 如何在 laravel 中进行多重过滤查询?

转载 作者:行者123 更新时间:2023-12-05 01:12:56 25 4
gpt4 key购买 nike

我有 3 个用于搜索的查询过滤器。第一个查询是选择选项查询,当我想在日期开始和日期结束查询之间进行搜索时,第二个查询是日期查询。最后一个查询是关于搜索名称等。唯一有效的查询只是最后一个。我的代码发生了什么,我认为我的代码没有任何问题

这是我使用过滤器的代码

filtercontroller.php

public function viewType(Request $request, ReportViewAll $reportview){

$reportview = $reportview->newQuery();
if ($request->has('program')) {
if($request->input('program') == 'reportall'){
$reportview;
}
elseif($request->input('program') == 'reportactive'){
$reportview->where('crewprogram_isdisabled', '=',0);
}
elseif($request->input('program') == 'reporthistory'){
$reportview->where('crewprogram_isdisabled', '=',1);
}
}

if(($request->has('datestart') && $request->has('dateend'))){
$reportview->whereBetween('crewprogrammemo_placement_date',
array($request->input('datestart'), $request->input('dateend')));
}

if($request->has('search')){
$reportview->where ( 'employee_nik', 'LIKE', "%{$request->search}%" )
->orWhere ( 'employee_nama', 'LIKE', "%{$request->search}%" )
->orWhere ( 'show_focus_id', 'LIKE', "%{$request->search}%" )
->orWhere ( 'show_name', 'LIKE', "%{$request->search}%" );
}

return $reportview->get();

// return view('CrewProgram.ReportView.index', compact('reportview'));
}

我应该怎么做才能让他们三个开始工作,而不仅仅是 1 个正在工作的查询

已编辑

public function viewType(Request $request, ReportViewAll $reportviewall){

$reportviewall = $reportviewall->newQuery();

if ($request->has('program')) {
if($request->input('program') == 'reportall'){
$reportviewall;
}
elseif($request->input('program') == 'reportactive'){
$reportviewall->where('crewprogram_isdisabled', '=',0);
}
elseif($request->input('program') == 'reporthistory'){
$reportviewall->where('crewprogram_isdisabled', '=',1);
}
}

if(($request->has('datestart') && $request->has('dateend'))){
$reportviewall->whereBetween('crewprogrammemo_placement_date',
array($request->input('datestart'), $request->input('dateend')));
}

If($request->has('search')){
$reportviewall->where(function($query) use($request) {
$query->where('employee_nik', 'LIKE', "%{$request->search}%" )
->orWhere ( 'employee_nama', 'LIKE', "%{$request->search}%" )
->orWhere ( 'show_focus_id', 'LIKE', "%{$request->search}%" )
->orWhere ( 'show_name', 'LIKE', "%{$request->search}%" );
});
}


$reportviewall = $reportviewall->get();
return view('CrewProgram.ReportView.index', compact('reportviewall'));
}

最佳答案

你有两个选择:

  • 使用 orWhere() :

    Model::query()->where([])->orWhere([])->get();
  • AND 使用第二个数组:

    Model::query()->where([['column1' , '!=' , 'value1'] , ['column2' , '=' , 'value2'] , ['column3' , '<' , 'value3']])->get();

关于laravel - 如何在 laravel 中进行多重过滤查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61272561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com