在 Laravel 中避免 MySQL 中的时间/日期重叠可以通过以下方式实现:
Schema::table('your_table', function (Blueprint $table) {
$table->unique(['start_time', 'end_time']);
});
$startTime = '2022-01-01 09:00:00';
$endTime = '2022-01-01 10:00:00';
$records = DB::table('your_table')
->where(function ($query) use ($startTime, $endTime) {
$query->where('start_time', '>', $endTime)
->orWhere('end_time', '<', $startTime);
})
->get();
use Carbon\Carbon;
$startTime = Carbon::parse('2022-01-01 09:00:00');
$endTime = Carbon::parse('2022-01-01 10:00:00');
// 检查时间/日期是否重叠
$overlap = DB::table('your_table')
->where(function ($query) use ($startTime, $endTime) {
$query->where('start_time', '<=', $endTime)
->where('end_time', '>=', $startTime);
})
->exists();
if ($overlap) {
// 时间/日期重叠处理逻辑
} else {
// 时间/日期不重叠处理逻辑
}
以上是在 Laravel 中避免 MySQL 中时间/日期重叠的一些方法。对于更复杂的需求,可以根据具体情况进行定制开发或使用相关的 Laravel 扩展包。
领取专属 10元无门槛券
手把手带您无忧上云