Как исправить «Объект класса stdClass не удалось преобразовать в строку»: Laravel 5.4

#php #laravel #laravel-5 #error-handling #maatwebsite-excel

#php #laravel #laravel-5 #обработка ошибок #maatwebsite-excel

Вопрос:

У меня проблема, когда я пытаюсь сгенерировать данные из базы данных с помощью maatwebsite / laravel-excel в .csv, я получаю сообщение об ошибке, подобное этому: объект класса stdClass не удалось преобразовать в строку.

Иногда, когда я выбирал данные из базы данных, используя только одно поле, файл может генерироваться (.csv). Это моя ошибка :

в HandleExceptions-> HandleError(4096, ‘Объект класса stdClass не удалось преобразовать в строку’, ‘/vendor/phpoffice/phpexcel/Classes/PHPExcel/Cell/DefaultValueBinder.php ‘, 65, массив(‘ячейка’ => объект(PHPExcel_Cell), ‘значение’ => объект(стандартный класс)))

Это мой запрос для получения данных из базы данных, var $temp для размещения результатов запроса.

     public function coba ($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,
        nvl(sum(case when lastactiontype='1' then totalcharge end),0) as blocked_usage,
        count(case when lastactiontype='1' then msisdn end) as blocked_rec,
        nvl(sum(case when lastactiontype='2' then totalcharge end),0) as adjusted_usage,
        count(case when lastactiontype='2' then msisdn end) as adjusted_rec,
        nvl(sum(case when lastactiontype='3' then totalcharge end),0) as sms_usage, 
        count(case when lastactiontype='3' then msisdn end) as sms_rec,
        nvl(sum(case when lastactiontype='5' then totalcharge end),0) as call_usage, 
        count(case when lastactiontype='5' then msisdn end) as call_rec,
        nvl(sum(case when lastactiontype in ('1','2','3','5') then totalcharge end),0) as total_usage, 
        count(case when lastactiontype in ('1','2','3','5') then msisdn end) as total_rec
    from alarms_v2
    where alarmdate = '$today'
    group by regionalid order by regionalid"));

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

Я ожидаю, что смогу генерировать данные из базы данных в .csv или excel, чтобы они могли работать должным образом.

Ответ №1:

Попробуйте это:

 $sheet->fromArray((array)$temp);
 

Комментарии:

1. Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.