Я проследил за документом maatwebsite версии 3.1, и я пытаюсь сопоставить все варианты вопросов в строке с вопросом при экспорте в формате Excel.Вот что я сделал в App \ Exports \ QuestionExcel.php:
<?php
namespace App\Exports;
use App\Question as Question;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithMapping;
class QuestionExcel implements FromCollection, WithHeadings, WithMapping
{
use Exportable;
/*
Question $question
*/
private $i = 1;
public function collection()
{
return Question::with('level','questionType','questionChoices')->get();
}
public function map($question): array
{
// $question
return [
$this->i++,
$question->description,
$question->questionType->name,
$question->level->name,
$question->duration,
$question->questionChoices->map(function ($choice){
return $choice->label;
}),
];
}
public function headings(): array
{
return [
'No',
'Question',
'Type',
'Level',
'Duration (s)',
];
}
}
В App \ Http \ Controllers \ ExcelController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Excel;
use App\Exports\QuestionExcel;
use App\Level as Level;
class ExcelController extends Controller
{
private $excel;
public function __construct(Excel $excel)
{
$this->excel = $excel;
}
public function export_questions($level_id){
$level = Level::find($level_id);
$level_name = str_replace(' ', '_', $level->name);
return (new QuestionExcel)->download($level_name.'_question_exports.xlsx');
}
}
Результат Результат Excel
Пожалуйста, кто-нибудь поможет мне получить такой результат? Ожидаемый результат