如何修复 "Call to a member function get() on array" :Laravel 5.4
How to fix "Call to a member function get() on array" : Laravel 5.4
我使用 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);
}
$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() 方法已经执行了查询和 return 结果数组。所以,只需按照以下步骤操作:
$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"));
我使用 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);
}
$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() 方法已经执行了查询和 return 结果数组。所以,只需按照以下步骤操作:
$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"));