如何修复“在数组上调用成员函数get()”:Laravel 5.4

时间:2019-04-14 17:57:50

标签: php laravel csv report maatwebsite-excel

我无法使用 maatwebsite / laravel-excel 从数据库下载已生成数据的文件。错误:在数组上调用成员函数get()。

之前,当我仅使用一个字段从数据库中选择数据时,该文件可以生成(.csv)。但是当我尝试使用别名“ as”进行查询时,无法获得数据。

public function getdoc($type)
{
    -- with this query : success --
    //$temp = AlarmV2::select('msisdn')->get();
    $today = "20181008";
    -- with this query : error --
    $temp = DB::select(DB::raw("select regionalid,
    nvl(sum(case when lastactiontype='0' then totalcharge end),0) as creditlimit_usage, 
    count(case when lastactiontype='0' then msisdn end) as creditlimit_rec,
    from alarms_v2
    where alarmdate = '$today'
    -- fatal error exception :Call to a member function get() on array --
    group by regionalid order by regionalid"))->get();

    return Excel::create('datadoc', function ($excel) use ($temp) {
        $excel->sheet('mySheet', function ($sheet) use ($temp) {
            $sheet->fromArray($temp);
        });
    })->download($type);
}

1 个答案:

答案 0 :(得分:0)

$temp = DB::select(DB::raw("select regionalid,
    nvl(sum(case when lastactiontype='0' then totalcharge end),0) as creditlimit_usage, 
    count(case when lastactiontype='0' then msisdn end) as creditlimit_rec,
    from alarms_v2
    where alarmdate = '$today'
    -- fatal error exception :Call to a member function get() on array --
    group by regionalid order by regionalid"))->get();

这里您不需要调用get()方法。因为select()方法已经执行查询并返回结果数组。因此,请像下面这样:

$temp = DB::select(DB::raw("select regionalid,
        nvl(sum(case when lastactiontype='0' then totalcharge end),0) as creditlimit_usage, 
        count(case when lastactiontype='0' then msisdn end) as creditlimit_rec,
        from alarms_v2
        where alarmdate = '$today'
        group by regionalid order by regionalid"));