【发布时间】:2017-05-15 21:36:48
【问题描述】:
我有一个 iOS 应用程序,用户可以每天或每小时预订一辆车,如果用户预订一辆车,其他用户在第一次预订结束之前无法预订。我使用 Laravel 作为 API 将数据保存到 MySQL 数据库。
时间和日期的格式是这样的27 Dec 201615: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 或任何东西是否正确
我的主要问题是如何避免应用数据库中的时间和日期重叠?
【问题讨论】:
-
如果是我,我会暂时忘记所有 PHP/Laravel 的东西,而是专注于获得有效的 MySQL 查询
-
你的意思是这样的
SELECT * FROM Reservation WHERE ((date_end > '" . $from_date . "') AND (date_start < '" . $to_date . "')) ";?或更复杂?抱歉,我是 Laravel 的新手 -
嗯,我猜 :-)
-
时间怎么样?是否可以在一个查询中同时检查时间和日期?
-
该查询 sn-p 误解了重叠范围的概念 - 但将日期和时间存储为单个实体的想法是正确的
标签: php mysql laravel date laravel-5.3