【发布时间】:2017-07-10 08:35:26
【问题描述】:
这是我的示例表:
reservation_date |时间开始 |时间结束 2017 年 7 月 10 日 | 12:00:00 | 14:00:00
我要做的是根据用户的请求返回 time_start 和 time_end 之间的所有预订。并从 time_start 和 time_end 开始/添加 2 小时以防止冲突。我试过了
$times_data = $this->getTimesData($request->reservation_time_start, $request->reservation_time_end);
$reservations = $reservations->whereBetween('reservation_time_start', $times_data)
protected function getTimesData($time_start, $time_end)
{
$time_from = $this->getTimeFrom($time_start);
$time_to = $this->getTimeTo($time_end);
return [$time_from, $time_to];
}
protected function getTimeFrom($time)
{
$time = Carbon::parse($time);
return $time->subHours(2)->toTimeString();
}
protected function getTimeTo($time)
{
$time = Carbon::parse($time);
return $time->addHours(2)->toTimeString();
}
但结果不是我所期望的。我也试过了
->whereRaw("(reservation_time_start BETWEEN ? AND ?) AND (reservation_time_end BETWEEN ? AND ?) ",$times_data)
但它返回空值。请帮忙。
【问题讨论】:
-
您尝试过的原始部分需要 4 个参数,但您提供了两个参数。试试
array_merge($times_data,$times_data)
标签: php mysql eloquent laravel-5.1