首页 > 解决方案 > 如何在 laravel 中使用 sum 运算符选择案例

问题描述

我有这个查询,当它们有一个活跃的id(如id_test = 1 note_test = 11)时,来自不同列的值求和,如果id为0,它有一个case语句

这是查询

select                                              
    case when id_test1 = 1 then note_test1 else 0 end +                                             
    case when id_test2 = 1 then note_test2 else 0 end +                                             
    case when id_test3 = 1 then note_test3 else 0 end +                                             
    case when id_test4 = 1 then note_test4 else 0 end +                                             
    case when id_test5 = 1 then note_test5 else 0 end +                                             
    case when id_test6 = 1 then note_test6 else 0 end +                                             
    case when id_test7= 1 then note_test7 else 0 end as total_weighted                                              
    from rp_student where id = 1

这是我在 laravel 中的查询

$weighted= DB::table('rp_student')
        ->select(DB::raw('case when id_test1 = 1 then note_test1 else 0 end +                                               
    case when id_test2 = 1 then note_test2 else 0 end +                                             
    case when id_test3 = 1 then note_test3 else 0 end +                                             
    case when id_test4 = 1 then note_test4 else 0 end +                                             
    case when id_test5 = 1 then note_test5 else 0 end +                                             
    case when id_test6 = 1 then note_test6 else 0 end +                                             
    case when id_test7= 1 then note_test7 else 0 end as total_weighted'))
        ->where('id','=',1);

它没有给我任何回报

标签: phpmysqllaravel

解决方案


您的查询最后缺少所需->get()的内容。您当前看不到值的原因是查询尚未实际执行。

get 方法返回一个包含结果的 Illuminate\Support\Collection,其中每个结果都是 PHP stdClass 对象的一个​​实例。您可以通过将列作为对象的属性访问来访问每一列的值:

https://laravel.com/docs/5.8/queries#retrieving-results


推荐阅读