Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.7中带有多个值的Where子句_Php_Mysql_Ajax_Laravel_Laravel 5.7 - Fatal编程技术网

Php Laravel 5.7中带有多个值的Where子句

Php Laravel 5.7中带有多个值的Where子句,php,mysql,ajax,laravel,laravel-5.7,Php,Mysql,Ajax,Laravel,Laravel 5.7,我试图为公交系统做一个报告,报告的表单有“司机”和“路线”字段。当我选择“驾驶员”获取报告或仅选择“路线”获取报告时,它工作正常,但当我同时选择“驾驶员”和“路线”时,会出现问题。请提供任何帮助 查看/表单 自日期起: 迄今为止: 路线 {{$value->from}->{{$value->to} 司机 {{$value->name} 搜寻 路线 Route::get('post_genral_report/{start?}/{end?}' , 'reportController@pos

我试图为公交系统做一个报告,报告的表单有“司机”和“路线”字段。当我选择“驾驶员”获取报告或仅选择“路线”获取报告时,它工作正常,但当我同时选择“驾驶员”和“路线”时,会出现问题。请提供任何帮助

查看/表单


自日期起:
迄今为止:
路线
{{$value->from}->{{$value->to}
司机
{{$value->name}
搜寻
路线

 Route::get('post_genral_report/{start?}/{end?}' , 
'reportController@post_genral_report')->name('abd');
控制器

public function post\u genral\u报告(请求$Request,$start=null,$end=null)
{
$data=DB::table('registration\u tickets')
->加入('trips','trips.id','registration\u tickets.trip\u id'))
->join('bus'、'bus.id'、'trips.bus\u id')
->加入('drivers','drivers.id','trips.drivers\u id'))
->加入('routes'、'routes.id'、'trips.route_id')
->加入('省为p1',p1.id',routes.from')
->加入('p2'、'p2.id'、'routes.to'等省份)
->选择('registration_tickets.*'、'p1.name as from'、'p2.name as to'、'bus.type'、'bus.plate',
“drivers.name作为d_name”,“drivers.lastname作为lname”);
如果($start和$end){
$data->whereBetween('registration\u tickets.date'[
$start,
$end
]);
}
如果($request->driverid){
$data->where('trips.driver\u id',$request->driverid);
}
如果($request->routeid){
$data->where('trips.route_id',$request->routeid);
}
如果($request->driverid和$request->routeid){
$data->where([
'trips.driver_id','=',$request->driverid,
“trips.route_id','=',$request->routeid”
]);
}
$data=$data->get();
返回Datatables::of($data)->make(true);
}
您需要修改您同时使用驾驶员id和路线id的零件,以达到您的目的(因为根据您的代码,当route_id或driver_id都在开始日期和结束日期之间时,您似乎希望得到结果,但是您的代码会分别检查driver_id和route_id的where条件。您需要将它们包装在where中,并在其中使用嵌套的where):


您不需要
if($request->driverid和$request->routeid){$data->where(['trips.driver\u id','=',$request->driverid,'trips.route\u id','=',$request->routeid');}
。因为如果您同时输入这两个值,上面的代码将同时应用这两个条件。只需尝试删除此部分。“有什么问题”有什么问题?@DhananjayKyada我已按您所说删除了此部分。但没有任何更改,@Viney如我所说,当我单独获取报告时效果很好,例如,我只想获取“驱动程序”的报告或者只是为了“路线”,但当我选择两者时,它不能正常工作,有点忽略司机,它只是为了“路线”排序@Reza.你确定至少有一条记录同时满足这两个条件吗?请先检查。非常感谢,但仍然忽略驾驶员存档并通过RouteOk获取报告。我知道你需要基于驾驶员和路线的报告,而不是基于或条件。你代码中的问题是它检查where条件的驱动程序id和路由id分别为。您需要将它们包装在where中并在其中使用嵌套where,然后它将仅在两个条件都满足时给出结果。请检查我的更新解决方案。
if ($request->driverid and $request->routeid) {
    $data->where(function($q) use ($request)
    {
        $q->where('trips.driver_id', '=', $request->driverid)
        ->where('trips.route_id', '=', $request->routeid);
    });
}