避免在mysql(laravel)中重叠时间/日期

时间:2017-01-01 13:00:55

标签: php mysql laravel date laravel-5.3

我有一个iOS应用程序,用户可以每天或每小时预订一辆车,如果用户预订了一辆车,其他用户无法预订,直到第一次预订结束。我使用Laravel作为API将数据保存到MySQL数据库。

时间和日期的格式类似于27 Dec 2016 15:21。我保存了数据

 public function requested(Request $request)
{
  $time = new Reservation();
  $time->from_date = $request->from_date;
  $time->to_date = $request->to_date;
  $time->from_time = $request->from_time;
  $time->to_time = $request->to_time;

}

但这不能防止时间重叠,所以我尝试了这个

 $carCount = Reservation::where(

  function ($query) use ($startTime, $endTime) {
            $query->where('from_time', '<', $endTime)
                ->where('to_time', '>', $startTime);
        }
    )->count();


    if ($carCount > 0) {
        return response()->json(['request' => 'no']); // this response just to check 
    } else {
        $carRoom->save();
        response()->json(['request' => 'yes']);
    }

然后我认为由于日期/时间格式,这不起作用。但我想确定我应该在laravel中转换日期的格式?

这是我的预订迁移:

         $table->string('from_date')->nullable();
        $table->string('to_date')->nullable();

        $table->string('from_time')->nullable();
        $table->string('to_time')->nullable();

我制作了字符串,因为我不确定Time或其他什么是正确的

我的主要问题是如何在我的应用数据库中避免时间和日期重叠?

1 个答案:

答案 0 :(得分:1)

将日期作为时间戳存储在数据库中 那么你的查询应该按预期工作然后转换传入的日期:

2016年12月27日15:21

使用strtotime()或使用datetime对象的时间戳 两者都是PHP的一部分,请查看PHP文档以查看更多信息。