Генерация PHPExcel Laravel Excel со многими отношениями

Я работаю над приложением экзамена / викторины, и оно создает тесты / викторины для пользователей, и теперь я должен создать набор электронных таблиц, которые содержат данные, такие как данные о студентах на данном экзамене, таблицы оценок и так далее.

Но пока все, что мне удалось создать, это лист со ВСЕМИ пользователями, использующими `-> fromModel ‘, но если я использую какое-либо отношение и / или ограничение, я получаю пустой лист.

У меня есть эти модели:

 <?php

namespace EMMA5;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;

class Exam extends Model
{
//

protected $dates = ['created_at', 'updated_at', 'applicated_at'];

protected $fillable = [
'applicated_at',
'duration',
'board_id',
'passing_grade',
'annotation'
];

public function board()
{
return $this->belongsTo('EMMA5\Board');
}

public function users()
{
return $this->belongsToMany('EMMA5\User')->withPivot('active', 'started_at', 'ended_at', 'seat', 'location_id');
}


Модель пользователя (сокращенно)
Класс User расширяет Authenticatable
{

//Связи
публичная функция ответы ()
{
return $ this-> hasMany (Answer :: class);
}

    public function exams()
{
return $this->belongsToMany('EMMA5\Exam')->withPivot('active', 'started_at', 'ended_at', 'location_id');
}

И я пытаюсь создать лист с пользователями для данного экзамена:
(Это из моего ExamController.php)

/**
* Returns a spreadsheet with only the students that were present
*
* @return PHPOffice
*/
public function gradesSpreadshet(Exam $exam)
{
$grade = new Grade;
$gradedStudents = $grade->allStudents($exam)->toArray();
//dd(\EMMA5\Exam::find(195)->with('users')->get());
//dd($exam->answers->answer);
$data = $exam->users;
return Excel::create("FinalGrades", function ($excel) use($data) {
//Create sheet to be able to return something to keep on testing

//Another sheet
$excel->sheet('Primera hoja', function ($sheet) use($data) {
$sheet->fromArray($data);
});
})->export('xlsx');
}

И я получаю пустой лист.
Я уже пробовал с ->fromArray() а также ->fromModel() ,
Буду признателен за любой вклад.

0

Решение

Прошло некоторое время, и никто не ответил, но я нашел решение.
Я не знаю, будет ли это полезно для кого-то еще.

Способ, которым я получил результаты, не мог быть прочитан Excel Laravel. Поэтому я создал вспомогательную функцию с обратным вызовом.

public static function collectionToArray(Array $collect = null)
{
return array_map(function ($array) use($collect)
{
foreach ($array as $key => $value) {
$resultArray[$key] = $value;
}
return $resultArray;
}, $collect);
}

Это возвращает упрощенную версию Коллекции, которая может быть легко прочитана Excel Laravel.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]