Im Versuch, meine Daten zu an excel sheet aber ich habe den Fehler zu exportieren:Laravel aus der Erinnerung
FatalErrorException in Connection.php line 321: Allowed memory size of 134217728 bytes exhausted (tried to allocate 196605 bytes)
Ich verstehe ich konnte nur auf die Speichergrenze von PHP aber Ich mag mein Code verstehen, warum so dauert viel Gedächtnis.
Mein Code:
public function exportExcel()
{
$datum = date("d-m-Y");
Excel::create('Sales export '.$datum, function($excel) {
$datum = date("d-m-Y");
// Chain the setters
$excel->setCreator('some name')
->setCompany('some company')
->setDescription('sales export.')
->setTitle('Salesexport '.$datum);
$excel->sheet('sales '.$datum, function($sheet) {
$orders = Order::orderBy('created_at','desc')->get();
$sheet->appendRow(array(
"merk","product","artikel nr","categorie","collectie","maat","omschrijving","inkoopprijs","verkoopprijs","prijs betaald","aantal verkocht","verkocht aan", "totaal","dag","maand","jaar","kwartaal","reseller","verkoper","bestel naam"
));
foreach($orders as $order)
{
foreach($order->products as $p)
{
$sizeLink = $p->productSize;
$productLink = $sizeLink->product;
// Append row as very last
$sheet->appendRow(array(
$productLink->brand->name,
$productLink->name,
$productLink->artnr,
$productLink->category->name,
$productLink->collection->name,
$sizeLink->size->name,
$productLink->desciption,
number_format((float) $productLink->price_buy_in, 2, ',', ''),
number_format((float) $productLink->price, 2, ',', ''),
number_format((float) $p->price, 2, ',', ''),
$p->quantity, //geboekt aantal
$order->billingname . $order->billingnamelast,
number_format((float) $p->quantity * $p->price, 2, ',', ''), // totaal kosten
//number_format((float) ($p->quantity * $p->price - $p->quantity * $p->price_buy_in), 2, ',', ''), // winst inkoop-verkoop
date("d",strtotime($order->created_at)),
date("n",strtotime($order->created_at)),
date("Y",strtotime($order->created_at)),
ceil(date("m",strtotime($order->created_at))/3),
$order->reseller->name,
$order->creator,
$order->name,
));
}
}
// Auto filter for entire sheet
$sheet->setAutoFilter();
$sheet->freezeFirstRow();
// Set black background
$sheet->row(1, function($row) {
// call cell manipulation methods
$row->setBackground('#cccccc');
$row->setFontWeight("bold");
});
$sheet->setColumnFormat(array(
'G' => \PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00,
'H' => '[$EUR ]#,##0.00_-',
'I' => \PHPExcel_Style_NumberFormat::FORMAT_NUMBER_00,
));
});
})->download('xlsx');;
}
Wie viele Zeilen bearbeiten Sie normalerweise hier? –
Bestellungen enthält 135 Zeilen. orderproducts 1350 –
Können Sie die Daten im Cache speichern (täglich um 3 Uhr) und dann versuchen, sie zu exportieren, oder Sie benötigen "frische" Daten? –