Я работаю над приложением laravel, в котором пытаюсь сгенерировать Excel из данных в 2 таблицах в моей базе данных. Использовали SQL объединения для объединения данных из таблиц базы данных, что прекрасно работает. Я пытаюсь создать Excel из данных (используя Maatwebsite Laravel Excel пакет 3.1), затем сохранить Excel в папке в моем приложении, а затем отправил Excel в качестве вложения в тело письма.
Проблема в том, что когда я запускаю команду для генерации Excel, я получаю эту ошибку.
Symfony \ Component \ Debug \ Exception \ FatalThrowableError: Аргумент 2 передается в Maatwebsite \ Excel \ Excel :: download ( ) должен иметь тип строки, заданный объект, который вызывается в C: \ xampp \ htdocs \ jub \ ven dor \ laravel \ framework \ src \ Illuminate \ Support \ Facades \ Facade. php в строке 261
Я следовал документации и другим решениям в Интернете, но, похоже, что-то упустил в своей логике c.
Выполнить команду экспорта из документации
php ремесленник: экспорт MotorSalesExport
MotorSalesExport. php файл
<?php
namespace App\Exports;
use Modules\Motor\Entities\User;
use Modules\Motor\Entities\Quotation;
use Maatwebsite\Excel\Concerns\FromCollection;
use DB;
class MotorSalesExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
//Combine data in Quotations and users table
$allSales = DB::select('SELECT q.quotation_no, q.policy_number, q.premium_amount,
q.balance, q.business_type, q.risk_note, q.debit_note, q.output_status,
u.first_name , u.middle_name, u.surname, u.email, u.phone, u.email, u.kra_pin, u.id_number
FROM digital_lab_motor_quotations q INNER JOIN digital_lab_motor_users u ON
u.id=q.user_id WHERE q.payment_status = 2 AND payment_status= 2');
return $allSales;
}
}
Artisan Команда для создания Excel
<?php
namespace App\Console\Commands\General;
use DB;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Mail;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use App\Exports\MotorSalesExport;
use Maatwebsite\Excel\Facades\Excel;
class GenerateMotorSales extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'generate-motor-sales';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Queries all motor sales made online and generate an excel';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$this->export();
}
public function export()
{
$storage = public_path('documents\general\motor');
$file_name = 'Sales_' . Carbon::now();
$allData = new MotorSalesExport;
Excel::download($file_name, function ($excel) use ($allData) {
$excel->sheet('Motor Customers', function ($sheet) use ($allData) {
$sheet->fromArray($allData, '', 0, false, false);
});
})->store('xls', $storage);
}
}