我的 select 框给了我错误的值。如何在laravel中进行foreach?
My select box give me the wrong value. How to do foreach in laravel?
我正在使用 laravel 5.2 并且我的表单中有一个 select 框。 select 框用于列出当时可用的 driver。我只有 2 个 driver,所有 driver 都被预订了。但是当我进行 driver 预订时,列表中显示了 1 driver。我认为我的 foreach 有错误。我对吗?你知道怎么解决吗?
下面是我的控制器代码:
$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;
的时候。里面有2个driver
Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Reservation Object ( [timestamps] => [primaryKey:protected] => RES_ID [table:protected] => RESERVATION [connection:protected] => [perPage:protected] => 15 [incrementing] => 1 [attributes:protected] => Array ( [RES_DRIVER] => Asim ) [original:protected] => Array ( [RES_DRIVER] => Asim ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [fillable:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) [1] => App\Reservation Object ( [timestamps] => [primaryKey:protected] => RES_ID [table:protected] => RESERVATION [connection:protected] => [perPage:protected] => 15 [incrementing] => 1 [attributes:protected] => Array ( [RES_DRIVER] => Sulhi Mukhlas ) [original:protected] => Array ( [RES_DRIVER] => Sulhi Mukhlas ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [fillable:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) ) )
但是当我在 foreach 中执行 print_r($item1['RES_DRIVER']);die;
时,它只显示 1 个名为 Asim 的 driver。
我认为你正在使用 driver 的名称来处理所有这些事情,但如果你使用了 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');
这将为您提供一组不同的 driver 保留名称。现在,使用 whereNotIn
你可以获得 driver,而不是像这样预订 driver,
if(empty($driverReserved)){
$driver = vDriver::all();
}
else{
$driver = vDriver::whereNotIn("REF_TEXT",$driverReserved1)->get();
}
我认为这对你的情况有用。
希望你明白。
先看看Laravel Collection功能还不错
其次,代码是正确的,输出也是正确的: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());
}
当然还有在
之前分配驱动程序
我正在使用 laravel 5.2 并且我的表单中有一个 select 框。 select 框用于列出当时可用的 driver。我只有 2 个 driver,所有 driver 都被预订了。但是当我进行 driver 预订时,列表中显示了 1 driver。我认为我的 foreach 有错误。我对吗?你知道怎么解决吗? 下面是我的控制器代码:
$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;
的时候。里面有2个driver
Illuminate\Database\Eloquent\Collection Object ( [items:protected] => Array ( [0] => App\Reservation Object ( [timestamps] => [primaryKey:protected] => RES_ID [table:protected] => RESERVATION [connection:protected] => [perPage:protected] => 15 [incrementing] => 1 [attributes:protected] => Array ( [RES_DRIVER] => Asim ) [original:protected] => Array ( [RES_DRIVER] => Asim ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [fillable:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) [1] => App\Reservation Object ( [timestamps] => [primaryKey:protected] => RES_ID [table:protected] => RESERVATION [connection:protected] => [perPage:protected] => 15 [incrementing] => 1 [attributes:protected] => Array ( [RES_DRIVER] => Sulhi Mukhlas ) [original:protected] => Array ( [RES_DRIVER] => Sulhi Mukhlas ) [relations:protected] => Array ( ) [hidden:protected] => Array ( ) [visible:protected] => Array ( ) [appends:protected] => Array ( ) [fillable:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [dates:protected] => Array ( ) [dateFormat:protected] => [casts:protected] => Array ( ) [touches:protected] => Array ( ) [observables:protected] => Array ( ) [with:protected] => Array ( ) [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] => ) ) )
但是当我在 foreach 中执行 print_r($item1['RES_DRIVER']);die;
时,它只显示 1 个名为 Asim 的 driver。
我认为你正在使用 driver 的名称来处理所有这些事情,但如果你使用了 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');
这将为您提供一组不同的 driver 保留名称。现在,使用 whereNotIn
你可以获得 driver,而不是像这样预订 driver,
if(empty($driverReserved)){
$driver = vDriver::all();
}
else{
$driver = vDriver::whereNotIn("REF_TEXT",$driverReserved1)->get();
}
我认为这对你的情况有用。
希望你明白。
先看看Laravel Collection功能还不错
其次,代码是正确的,输出也是正确的: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());
}
当然还有在
之前分配驱动程序