【发布时间】:2019-11-06 20:40:53
【问题描述】:
我正在尝试为公共汽车运输系统制作报告,报告的表格有“司机”和“路线”字段。当我选择“驱动程序”来获取报告或只选择“路线”来获取报告时,它工作正常,但是当我同时选择“驱动程序和路线”时出现问题。任何帮助将不胜感激
视图/表单
<form action="" method="get">
<div class="row">
<div class="col-md-3 form-group">
<label>From Date:</label>
<input type="date" name="start" class="form-control">
</div>
<div class="col-md-3 form-group">
<label>To Date:</label>
<input type="date" name="end" class="form-control">
</div>
</div>
<div class="row">
<div class="col-md-3" id="route_content">
<label>Route</label>
<select name="routeid" id="route_id" class="js-example-placeholder-singleuserid js-states form-control"
style="width: 100%; height:40px;">
<option></option>
<?php foreach ($routes as $key => $value): ?>
<option value="{{$value->id}}">{{$value->from}} -> {{$value->to}}</option>
<?php endforeach ?>
</select>
</div>
<div class="col-md-3" id="driver_content" z>
<label>Driver</label>
<select name="driverid" id="driver_id" class="js-example-placeholder-single js-states form-control"
style="width: 100%; height:40px;">
<option></option>
<?php foreach ($driver as $key => $value): ?>
<option value="{{$value->id}}"> {{$value->name}} </option>
<?php endforeach ?>
</select>
</div>
</div>
<div class="row">
<div class="col-md-3 form-group">
<button class="btn btn-info btn-md" style="margin-top: 27px;">Search</button>
</div>
</div>
</form>
路线
Route::get('post_genral_report/{start?}/{end?}' ,
'reportController@post_genral_report')->name('abd');
控制器
public function post_genral_report(Request $request, $start = null, $end = null)
{
$data = DB::table('registration_tickets')
->join('trips', 'trips.id', 'registration_tickets.trip_id')
->join('buses', 'buses.id', 'trips.bus_id')
->join('drivers', 'drivers.id', 'trips.driver_id')
->join('routes', 'routes.id', 'trips.route_id')
->join('provinces as p1', 'p1.id', 'routes.from')
->join('provinces as p2', 'p2.id', 'routes.to')
->select('registration_tickets.*', 'p1.name as from', 'p2.name as to', 'buses.type', 'buses.plate',
'drivers.name as d_name', 'drivers.lastname as lname');
if ($start and $end) {
$data->whereBetween('registration_tickets.date', [
$start,
$end
]);
}
if ($request->driverid) {
$data->where('trips.driver_id', $request->driverid);
}
if ($request->routeid) {
$data->where('trips.route_id', $request->routeid);
}
if ($request->driverid and $request->routeid) {
$data->where([
'trips.driver_id', '=', $request->driverid,
'trips.route_id', '=', $request->routeid
]);
}
$data = $data->get();
return Datatables::of($data)->make(true);
}
【问题讨论】:
-
您不需要
if ($request->driverid and $request->routeid) { $data->where([ 'trips.driver_id', '=' , $request->driverid, 'trips.route_id', '=' , $request->routeid ]); }。因为如果您同时输入上面的值代码,则已经应用了这两个条件。尝试删除这部分。 -
“出了点问题”怎么了?
-
@DhananjayKyada 正如你所说,我删除了这部分。但什么都没有改变,
-
@Viney 正如我所说的那样,当我单独获取报告时它工作正常,例如我只想为 "Driver" 或 Just for "Route" 获取报告,但是当我同时选择两者时它不会工作正常,有点忽略驱动程序,它只为“路线”排序
-
@Reza。您确定至少有一个记录满足这两个条件吗?请先检查。
标签: php mysql ajax laravel laravel-5.7