Once I write the code, I get an error saying "Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR) Call to a member function all() on array"
Mar 21, 2021
4
Level 1
Export Data into excel using raw query
Hi there, I am trying to explore "maatwebsite/excel" using raw query. I am having problem doing it and I am not sure whether I am doing it correctly or not. Or many maatwebsite does not support raw query statement to export to excel format. Here are my existing code. Thanks for the help in advance.
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Illuminate\Support\Facades\DB;
class PaidExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*
*
*/
public function collection()
{
$results = DB::select(DB::raw("select o.order_no,
o.invoice_no,
bs.name,
p.name,
op.quantity,
op.total_price as package_total_amount,
o.delivery_status,
o.shipping_amount,
o.total_amount,
o.payment_status,
o.remarks,
from_unixtime(o.payment_at),
from_unixtime(delivered_at),
c.fb_name,
da.contact_person,
da.contact_no,
da.address_1,
da.postcode,
da.city,
da.state
FROM
orders o
inner join customers c on c.id = o.customer_id
inner join delivery_addresses da on da.id = o.delivery_address_id
inner join bid_sessions bs on bs.id = o.bid_session_id
inner join order_package op on op.order_id = o.id
inner join packages p on p.id = op.package_id
where
payment_status = 'paid'
and from_unixtime(o.payment_at) > DATE_SUB(now(), INTERVAL 1 MONTH)"));
return $results;
}
}
My controller
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Exports\PaidExport;
use Maatwebsite\Excel\Facades\Excel;
class ExportController extends Controller
{
public function showIndexPage()
{
return view('admin.export.view');
}
public function showPaidPage()
{
return view('admin.export.paid');
}
public function showStockOutPage()
{
return view('admin.export.stock');
}
public function exportPaid()
{
return Excel::download(new PaidExport, 'paid.xlsx');
}
}
Please or to participate in this conversation.