При экспорте в Excel появляется эта ошибка. Попытка получить свойство 'id' необъекта - PullRequest
0 голосов
/ 25 июня 2018

Я использую Maatwebsite Laravel Excel пакет 3.0. Это мой InvoicesExport.php

    class InvoicesExport implements FromCollection
{
    public function collection()
    {
        $company_id = Auth::user()->company_id;
         $assets = Asset::where('id', $company_id)->get()->toArray();    
         $assets_array = array();
        if(!$assets->isEmpty()){
         foreach($assets as $asset){
             $assets_array[] = array(
             'Asset ID' => $asset->id,
             'Asset Name' => $asset->name,
             'Description' => $asset->description,
             'Serial Number' => $asset->serialno,
             'External ID' => $asset->external_id,
             'Location' => $asset->location,
             'Expiry Date' => $asset->expiry_date,
             'Owner' => $asset->owner,
             'Status' => $asset->status,
             'Updated at' => $asset->updated_at
             );
            }
        }
        //dd($assets_array); 
        return $assets_array;
    }
}

И я продолжаю получать эту ошибку

Trying to get property 'id' of non-object

А это моя функция в контроллере

public function excel() 
    {    
          return Excel::download(new InvoicesExport, 'invoices.xlsx');
    }

Мой код выглядит следующим образом, и я продолжаю получать эту ошибку.

Call to a member function each() on array

Когда я использую dd ($ assets_array), я получаю те 2 элемента, которые у меня есть в базе данных, поэтому я думаю, что это может быть проблема в моем ВОЗВРАТЕ

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Кажется, проблема не в InvoicesExport Class.

Почему бы вам не изменить тип возврата?

вместо возврата

return $assets_array;

Сделай так:

return collect($assets_array);
0 голосов
/ 25 июня 2018

вы конвертируете коллекцию в массив и пытаетесь получить к ней доступ как к объекту, просто удалите toArray

    $assets = Asset::where('id', $company_id)->get();
...