我使用的是Laravel5.2,我的表单中有一个选择框。此复选框用于当时可用驱动程序的列表。我只有两个司机,所有的司机都订满了。但是当我预订司机时,列表上有一个司机显示。我想我的前额有个错误。我说的对吗?你知道怎么解决吗?以下是我的控制器代码:
$driverReserved = Reservation::select("RES_DRIVER")->where("RES_RETURN", '>', $reservation[0]->RES_DEPARTURE)->where('RES_STATUS', '=', 'Assigned')->Where('RES_SPK', '!=', $request['RES_SPK'])->exists();
$driverReserved1 = Reservation::select("RES_DRIVER")->where("RES_RETURN", '>', $reservation[0]->RES_DEPARTURE)->where('RES_STATUS', '=', 'Assigned')->Where('RES_SPK', '!=', $request['RES_SPK'])->distinct()->get();
if(empty($driverReserved)){
$driver = vDriver::all();
}
else{
foreach($driverReserved1 as $item1) {
$driver = vDriver::where("REF_TEXT", "!=", $item1['RES_DRIVER'])->get();
}
}
这就是我做print_r($dirverReserved1);die;
的时候。里面有两个司机。
照明\数据库\雄辩\集合对象(项目:受保护的=>数组( => => \订票对象)(时间戳=>主键:受保护的=> RES_ID表:受保护的=>预留连接:受保护的=> perPage:受保护的=> 15增量=> 1属性:受保护的=>数组( RES_DRIVER => Asim )原始:受保护的=>阵列( RES_DRIVER => Asim )关系:受保护的=>数组()隐藏的:受保护的=>阵列()可见:受保护的=>数组(附加):受保护的=> (可填充的):受保护的=> 19#数组()保护的数组:保护的#20#数组(数组))*日期:受保护的=>数组()dateFormat:受保护的=>数组()触碰:受保护的=>数组()可观察性:受保护的=>阵列()与:受保护的=>阵列()形态类:受保护的=>阵列存在1 wasRecentlyCreated => )1 => App\订票对象(时间戳=>主键:受保护的=> RES_ID表:受保护的=>保留连接:受保护的=> 15递增的=> 1属性:受保护的=>数组(#en23 20# Sulhi Mukhlas )原始:保护的=> 21#( Sulhi Mukhlas )关系:保护数组()隐藏:受保护的=>阵列()可见:受保护的=>阵列()附加:受保护的=>阵列()可填充:受保护的=>阵列()已保护:受保护的=>阵列( => *)日期:受保护的=>阵列()dateFormat:受保护的=>阵列()触碰:受保护的=>阵列()观察:受保护的=>阵列()带:受保护的=>数组()形态学:受保护的=>数组:受保护的=>阵列( => )
但是当我在前排做print_r($item1['RES_DRIVER']);die;
时,它只显示了一个名叫Asim的司机。
发布于 2018-01-29 03:34:24
我认为您正在使用驱动程序的名称来处理所有这些事情,但是如果您使用了ID,那么它会更好。
不管怎样,
我认为您应该在代码中使用pluck
和whereNotIn
来解决这样的问题,
将对$driverReserved1
的查询更改为
$driverReserved1 = Reservation::select("RES_DRIVER")->where("RES_RETURN", '>', $reservation[0]->RES_DEPARTURE)->where('RES_STATUS', '=', 'Assigned')->Where('RES_SPK', '!=', $request['RES_SPK'])->distinct()->pluck('RES_DRIVER');
这将为您提供保留的不同驱动程序名称数组。现在,使用whereNotIn
,您可以获得这样的已预订司机以外的其他司机,
if(empty($driverReserved)){
$driver = vDriver::all();
}
else{
$driver = vDriver::whereNotIn("REF_TEXT",$driverReserved1)->get();
}
我觉得这对你的案子有用。
我希望你能理解。
发布于 2018-01-29 03:34:50
首先检查Laravel收藏,它有相当好的功能
其次,代码是正确的,输出也是正确的:D
你只是期望错误的输出
foreach($driverReserved1 as $item1) {
$driver = vDriver::where("REF_TEXT", "!=", $item1['RES_DRIVER'])->get();
}
在这里,您刚刚说过最后一条记录将保存在$driver中,所以您可以在驱动程序中使用它们。
array_merge($firstArray,$secondArray);
在这里的例子中,它将类似于
foreach($driverReserved1 as $item1) {
$driver = array_merge($driver ,vDriver::where("REF_TEXT", "!=", $item1['RES_DRIVER'])->get());
}
当然,之前还分配了司机
https://stackoverflow.com/questions/48493616
复制相似问题