【问题标题】:Laravel 5 Query builderLaravel 5 查询构建器
【发布时间】:2017-01-10 01:59:11
【问题描述】:

我尝试了高级 where 子句

我的模型有 2 个日期时间列 startend

请求有两个值date_start, date_end

我的代码

->where(function($q) use ($date_start,$date_end) {
                $q->where('start','>=',$date_start)
                  ->where('end','<=',$date_start)
                  ->where('start','>=',$date_end)
                  ->where('end','<=',$date_end);
            })
            ->first();

代码什么也没返回,但在表中有一条记录, 根据要求合适的值。怎么了?

【问题讨论】:

  • 记录的开始值和结束值是什么,您传入的开始值和结束值是什么进行比较?
  • 您对这种情况有何期望?我认为只有当您的记录在数据库中的开始日期 >= 结束日期且 $date_start 和 $date_end 在 [end, start] 范围内时,它才能匹配条件
  • 如果您要比较日期,您可能需要使用whereDate

标签: laravel laravel-5.2 laravel-query-builder


【解决方案1】:

工作

$q->where('start','<=',$date_start)
  ->where('start','<',$date_end)
  ->where('end','<=',$date_end);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2021-09-25
    • 2016-06-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多