我有一个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
或其他什么是正确的
我的主要问题是如何在我的应用数据库中避免时间和日期重叠?
答案 0 :(得分:1)
将日期作为时间戳存储在数据库中 那么你的查询应该按预期工作然后转换传入的日期:
2016年12月27日15:21
使用strtotime()或使用datetime对象的时间戳 两者都是PHP的一部分,请查看PHP文档以查看更多信息。