以laravel雄辩的方式转换原始查询

时间:2017-07-23 19:58:24

标签: laravel-5 laravel-eloquent

如何以Laravel雄辩的方式转换此查询?

SELECT * FROM posts WHERE status=1  and now() BETWEEN start_time and end_time ORDER BY id DESC LIMIT 1

// What so far i have tried 

Post::whereStatus(1)->orderBy('id','desc')->get()
  

“和now()BETWEEN start_time和end_time”。我无法转换   这部分是雄辩的。

任何建议都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

您可以通过定义start_time低于当前日期时间并且end_time大于它来实现相同的语义:

Post::whereStatus(1)
         ->where("start_time", "<", Carbon::now())
         ->where("end_time", ">", Carbon::now())
         ->orderBy('id','desc')
         ->first();

答案 1 :(得分:1)

您可以执行以下操作

Post::where('status', 1)
    ->where('start_time', '>', Carbon::now())
    ->where('end_time', '<', Carbon::now())
    ->orderBy('id', 'DESC')
    ->take(1)
    ->get();