简体   繁体   English

如何在laravel原始查询中使用案例

[英]How to use case in laravel raw query

I want to select the row based on the current time in laravel. 我想根据laravel中的当前时间选择行。 I have a query but it give a empty result. 我有一个查询,但它给出一个空的结果。

$price_calc = DB::table('trip_price_fixing')
            ->select(DB::raw("DATE(D.datumTijd),
     CASE WHEN TIME(D.datumTijd) BETWEEN '08:00:00' AND '14:00:00' THEN 1
          WHEN TIME(D.datumTijd) BETWEEN '14:00:00' AND '20:00:00' THEN 2
          WHEN TIME(D.datumTijd) BETWEEN '20:00:00' AND '24:00:00' THEN 3
     END "));

Try to separate fields in select and name the secound aggregated field (in my example is result ): 尝试在select中分隔字段并命名secound聚合字段(在我的示例中是result ):

$price_calc = DB::table('trip_price_fixing')
        ->select(DB::raw("DATE(D.datumTijd) as date",
                 DB::raw("(CASE WHEN TIME(D.datumTijd) BETWEEN '08:00:00' AND '14:00:00' THEN 1
                          WHEN TIME(D.datumTijd) BETWEEN '14:00:00' AND '20:00:00' THEN 2
                          WHEN TIME(D.datumTijd) BETWEEN '20:00:00' AND '24:00:00' THEN 3
 END) as result"))->get();

I also think that you have to drop the D. namespace from the query. 我还认为你必须从查询中删除D.命名空间。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM