2017-07-13 4 views
0

Ich habe versucht, eine Excel-Tabelle in Laravel zu erstellen, indem ich drei Tabellen verknüpfte, um das Ergebnis der Abfrage in einem Excel-Blatt auszugeben.Objekt der Klasse stdClass konnte nicht in eine Zeichenfolge in Laravel konvertiert werden. Excel-Datei herunterladen

Modell Abfrageergebnis abzurufen:

<?php 
namespace App; 
use Illuminate\Support\Facades\DB; 
use Illuminate\Database\Eloquent\Model; 

class Product extends Model { 
    protected $table= 'product_master'; 
    protected $primaryKey = 'product_id'; 

    public static function download() { 
     $data=DB::table('product_master') 
      ->join('subcategory_master', 'product_master.subcategory_id', '=', 'subcategory_master.id') 
      ->join('category_master', 'product_master.category_id', '=', 'category_master.id') 
      ->select('product_master.product_id','product_master.product_name','product_master.part_number','category_master.category_name','subcategory_master.subcategory_name','product_master.net_quandity','gross_weight','product_master.product_type','product_master.description') 
      ->where('delete_status','=','0')->get(); 
     return($data); 
    } 
} 

Controller:

<?php 
namespace App\Http\Controllers; 

use Illuminate\Http\Request; 
use App\Http\Controllers\Controller; 
use App\Product; 
use Excel; 

class ExcelController extends Controller { 
    public function downloadExcel(Request $request, $type) { 
     $data = Product::download()->all(); 

     return Excel::create('productmaster', function($excel) use ($data) { 
      $excel->sheet('mySheet', function($sheet) use ($data) { 
       $sheet->fromarray($data); 
      }); 
     })->download($type); 
    } 
} 

Route:

Route::get('downloadExcel/{type}', '[email protected]'); 
+0

Wo genau der Fehler auftritt? – Kai

+0

$ sheet-> fromArray ($ data); in der controller –

Antwort

0

Meine Vermutung ist, dass Ihre Abfrage-Ergebnis ist ein Array, das Produktobjekte enthält. Objekte sind Schlüssel -> Wert. Aber das Excel-Tool erwartet, dass es nur Werte gibt.

Ihre Anfrage Ergebnis:

[['id'=>12, 'name'=>'Fidget Spinner'], ['id'=>13, 'name'=>'Shampoo'], ...] 

Was es sein sollte:

[[12,'Fidget Spinner'], [13, 'Shampoo'], ...] 

versuchen dies zu tun:

$data= Product::download()->all(); 
foreach($data as $k => $v){ 
    $data[$k] = array_values($v->getAttributes()); 
} 
+0

Wenn ich diesen Code versuchen, erzeugen Sie Folgendes: FatalErrorException Aufruf an undefinierte Methode stdClass :: getAttributes() –

+0

Vielen Dank kai ----- Ich änderte den Code zu ::::: 'öffentliche Funktion DownloadExcel (Request $ request, $ type) \t { \t \t \t \t $ data = Produkt :: Download() -> alle(); \t \t foreach ($ Daten als $ k => $ v) { \t \t \t $ v = (Array) $ v; \t \t \t $ daten [$ k] = (array_values ​​($ v)); \t \t} ' \t das funktioniert wirklich dankbar für Sie für Ihren Erfolg –

Verwandte Themen