【问题标题】:Laravel Time RangeLaravel 时间范围
【发布时间】:2020-01-18 17:18:41
【问题描述】:

我使用的是 Laravel 5.8,我有两列数据类型为时间戳,start_time 和 end_time。在保存新记录之前,我想检查它是否已经存在。

例如,如果我的数据库中已经有 Start Time= 09:00:00, End Time: 17:00:00 我不应该设置 start time = 13:00: 00 和 end_time=16:00:00 因为它已经在现有的时间间隔内,我也不应该注册 16:00:00->20:00:00 因为 16 :00:00 在区间内。

到目前为止我有这个,它不起作用:

DB::table('student_classes')
    ->where('id', '!=', $id)
    ->whereNotBetween('start_date', [$data['start_date'], $data['end_date']]);

【问题讨论】:

  • 到目前为止你有什么尝试?
  • DB::table('student_classes')->where('id', '!=', $id)->whereNotBetween('start_date' , [$data['start_date'], $data['end_date']] ),这不起作用
  • 您是否允许将08:00:00 插入到09:00:00?你为什么要id != $id
  • 如果有人在您检查时保存了记录怎么办?不要检查。只需将逻辑构建到“保存”中即可。
  • @JitendraYadav id!=id 表示如果编辑它可能会给你当前的模型,所以我排除了我当前的记录

标签: mysql laravel eloquent laravel-5.8


【解决方案1】:

@MahdiMiad 您如何在数据库中节省时间 - 它是时间戳还是字符串?我希望你使用时间戳。

在保存之前进行查询。

$rows = DB::table('student_classes')->whereNotBetween('start_date', [$data['start_date'],$data['end_date']])->get();
if (count($rows)>0) {
    // throw error
} else {
    // save the results
}

【讨论】:

  • 是的,我保存为时间戳,谢谢您的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 2012-10-19
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多