【问题标题】:Compare date time in Laravel eloquent比较 Laravel eloquent 中的日期时间
【发布时间】:2021-02-02 07:08:09
【问题描述】:

我在数据库中有开始和结束日期时间列

start_date             end_date             contact
2021-01-25 17:30:00    2021-01-25 20:30:00   xxxxxxxxx
2021-01-27 17:30:00    2021-01-28 19:30:00   xxxxxxxxx

现在我正在尝试获取这两个日期时间之间存在的记录,它也应该与手机号码匹配。我正在使用下面的查询,但它没有过滤记录

   $date = date('Y-m-d H:i:s', strtotime($request->date));
   $contact_number=$request->contact_number;

$event=Event::where(function ($query)use($date,$contact_number){
    $query->where('start_date', '>=', $date)->where('end_date', '<=', $date);})->where('contact',$contact_number)->paginate(5);  

【问题讨论】:

  • 你可以试试$query-&gt;where('start_date', '&lt;=', $date)-&gt;where('end_date', '&gt;=', $date);}) 吗?
  • @ClémentBaconnier:谢谢它正在工作
  • 如果它有效,请接受我的回答,以便其他人知道问题已解决。

标签: laravel laravel-5 eloquent


【解决方案1】:

您必须反转 &gt;=&lt;= 符号

$date = date('Y-m-d H:i:s', strtotime($request->date));
$contact_number = $request->contact_number;

$event = Event::where(function ($query) use ($date, $contact_number){
        $query->where('start_date', '<=', $date)
              ->where('end_date', '>=', $date);
    })
    ->where('contact',$contact_number)
    ->paginate(5); 

【讨论】:

    【解决方案2】:
    Laravel 4+ offers you these methods: whereDay(), whereMonth(), whereYear()  and whereDate() .
    
    
    
    
    Here are some ways to make the comparison :
    
    ->where('date', '<=', '2014-07-10 23:59:59')
    
    ->where('date', '<', '2014-07-11')
    
    // '2014-07-11'
    $dayAfter = (new DateTime('2014-07-10'))->modify('+1 day')->format('Y-m-d');
    
    ->where('date', '<', $dayAfter)
    

    【讨论】:

    • 你用的是哪个 laravel 版本?
    • 我使用的是 laravel 7
    • 试试这个代码 $from = date('2018-01-01'); $to = 日期('2018-05-02');预订::whereBetween('reservation_from', [$from, $to])->get();
    • 我在 $date 变量中只有一个日期时间我想将它与数据库中的两列即 start_date 和 end_date 进行比较,我也想比较时间
    【解决方案3】:

    试试这个:

    $date = Carbon\Carbon::parse($request->date)->format('Y-m-d H:i:s');
    $contact_number=$request->contact_number;
    
    $event=Event::where(function ($query)use($date,$contact_number){
        $query->where('start_date', '<=', $date)->where('end_date', '>=', $date);})->where('contact',$contact_number)->paginate(5);
    

    【讨论】:

    • @Azhar Alam :在我的日期变量中,我在我的数据库 start_date 和 end_date 列中有这个日期 2021-02-12 16:03:00,我分别有 2021-02-12 15:40:002021-02-12 19:40:00 这些条目,但是这个查询不返回任意行
    • 我已经编辑了我的答案。看看它是否有效
    猜你喜欢
    • 2014-09-28
    • 1970-01-01
    • 2018-10-06
    • 2012-01-20
    • 2016-03-18
    • 2022-01-02
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多