【问题标题】:How to use case in laravel raw query如何在 laravel 原始查询中使用案例
【发布时间】:2016-08-27 03:23:32
【问题描述】:

我想根据 laravel 中的当前时间选择行。我有一个查询,但它给出了一个空的结果。

$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 "));

【问题讨论】:

    标签: php laravel laravel-4 laravel-5


    【解决方案1】:

    尝试在 select 中分隔字段并命名第二个聚合字段(在我的示例中为 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();
    

    我还认为您必须从查询中删除 D. 命名空间。

    【讨论】:

    • 感谢 filip.how to get the value of $price_calc using result??
    • 我已经更新了我的答案。要获得结果您必须遍历$price_calc,这是结果记录的集合。当您获得单个结果时,您可以像这样访问:$record->result。你可以阅读更多关于 Laravel 的文档。
    • 我正在尝试迭代它给出空结果的结果?foreach($price_calc as $res) { echo $res; }
    • $res 是一个 stdObject 所以你应该这样做:{{ $res->result }} 根据查询字段的名称。
    • 你能不能:dd($price_calc); - 我们可以检查里面有什么
    猜你喜欢
    • 2021-12-05
    • 2021-06-24
    • 2019-07-13
    • 2016-01-08
    • 1970-01-01
    • 2019-11-05
    • 2015-07-01
    • 2016-05-10
    相关资源
    最近更新 更多