【问题标题】:How To Validate Crossed Time Laravel如何验证跨时间 Laravel
【发布时间】:2020-07-10 02:18:08
【问题描述】:

我的数据库中有这样的时间数据

+-------------+------------+------------+
|    id       | time_start | time_end   |
+---------------------------------------+
|    1        |  07:00     |  10:00     |
|    2        |  12:00     |  14:00     |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
|             |            |            |
+-------------+------------+------------+

但我的插入时间已过,

time_start : 08:00
time_end : 09:00

or

time_start : 08:00
time_end : 11:00

如何验证 time_starttime_end 是否不在数据库中的日期之间?

【问题讨论】:

    标签: php mysql database laravel validation


    【解决方案1】:

    我为您提供了在原始 SQL 中执行此操作的方法,您可以随意将其翻译成雄辩的繁琐:

    SET @tstart='10:00';
    SET @tend='11:00';
    
    INSERT INTO t_time_range (time_start, time_end)
    SELECT @tstart, @tend 
    WHERE  NOT EXISTS
           ( SELECT 1 
             FROM   t_time_range
             WHERE  time_start >= @tstart AND time_start < @tend
             OR     time_end > @tstart    AND time_end <= @tend
             OR     @tstart >= time_start AND @tstart < time_end
           );
    

    【讨论】:

      【解决方案2】:

      假设你的模型是time,你要输入的时间是$time_start$end_time

      $time = DB::table('time')
      ->where(['time_start', $time_start], 
              ['time_end', $end_time])
      ->first(); // see if there already is an entry
      

      如果$time没有结果,输入数据库中的时间。

      【讨论】:

        猜你喜欢
        • 2017-01-20
        • 2022-11-24
        • 2020-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2015-02-20
        • 1970-01-01
        相关资源
        最近更新 更多