Reputation: 59
I've database like this
+------------+----------------------------+---------------------------+
| day | start_time | end_time |
+---------------------------------------------------------------------+
| Sunday | 01:00 | 03:00 |
| Sunday | 13:00 | 15:00 |
| Sunday | 19:00 | 21:00 |
+------------+----------------------------+---------------------------+
and for checking date, i do with looping
// **nowTime = 02:00**
$get = DateModel::find($id)->get();
foreach($get as $result){
if(nowTime >= $result->start_time && nowTime <= $result->end_time){
echo "in range time";
}else{
echo "not in range time";
}
}
and the result :
in range time not in range time not in range time
i just want only show 1 result if there have "in range time" ,
and if all data not in range time, go to else.
any idea ?
Upvotes: 0
Views: 242
Reputation: 9303
You can use mapToGroups
collection method.
$get = DateModel::get()
->mapToGroups(function ($item, $key) {
$nowTime = '02:00';
if ($nowTime >= $item->start_time && $nowTime <= $item->end_time) {
return ['in range time' => $item];
} else {
return ['not in range time' => $item];
}
});
Result
array:2 [
"in range time" => array:1 [
0 => array:3 [
"day" => "Sunday"
"start_time" => "01:00"
"end_time" => "03:00"
]
]
"not in range time" => array:2 [
0 => array:3 [
"day" => "Sunday"
"start_time" => "13:00"
"end_time" => "15:00"
]
1 => array:3 [
"day" => "Sunday"
"start_time" => "19:00"
"end_time" => "21:00"
]
]
]
Upvotes: 1