Форум программистов, компьютерный форум, киберфорум
PHP: Laravel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
1

Laravel 6: отсутствует столбец в Excel при сохранении данных из таблицы

26.05.2020, 15:33. Показов 428. Ответов 1

Author24 — интернет-сервис помощи студентам
Выполнил задание с экспортом данных в таблицу рейтинг со ссылкой на id студента и получение его имени из таблицы студенты. Но возникла проблема, что при сохранении в Excel заголовки на месте, а столбец Name почему-то отсутствует.

Как разрешить проблему?

Если нужно будет показать еще какие-либо контроллеры, сервисы, запросы, модели, роуты, то отправлю.

Используются Laravel 6, Maatwebsite/Excel 3.1.

Таблица Студенты, Рейтинги и Excel-файл

Laravel 6: отсутствует столбец в Excel при сохранении данных из таблицы


Laravel 6: отсутствует столбец в Excel при сохранении данных из таблицы


Laravel 6: отсутствует столбец в Excel при сохранении данных из таблицы


RatingsExport.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
 
namespace App\Exports;
 
use App\Models\Rating;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
 
class RatingsExport implements FromCollection, WithHeadings
{
    public function collection()
    {
        return Rating::with('student')->get();
    }
 
    public function headings(): array
    {
        return [
            'ID',
            'Student_ID',
            'Name',
            'Discipline',
            'Mark',
            'Created At',
            'Updated At',
        ];
    }
}

RatingsImport.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
namespace App\Imports;
 
use App\Models\Rating;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
 
class RatingsImport implements ToModel, WithHeadingRow
{
    /**
     * @param array $row
     *
     * @return Rating|null
     */
    public function model(array $row)
    {
        return new Rating([
            'student_id'   => $row['student_id'],
            'name'   => $row['student']->name,
            'discipline'  => $row['discipline'],
            'mark'  => $row['mark']
        ]);
    }
}
Rating.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
 
class Rating extends Model
{
    use Notifiable;
 
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'student_id', 'discipline', 'mark'
    ];
 
    /**
     * Получить студента данной оценки.
     */
 
    protected $guarded = [];
 
    public function student()
    {
        return $this->belongsTo('App\Models\Student','student_id','id');
    }
 
}

Student.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
 
namespace App\Models;
 
use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
 
class Student extends Model
{
    use Notifiable;
 
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'card_number', 'group_name', 'subgroup'
    ];
 
    /**
     * Получить все оценки студента.
     */
    protected $guarded = [];
 
    public function rating()
    {
        return $this->hasMany('App\Models\Rating');
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2020, 15:33
Ответы с готовыми решениями:

При сохранении данных таблицы StringGrid в Excel появляется ошибка
При сохранении данных таблицы StringGrid в Excel появляется ошибка. Код пишу в обработчике кнопки...

Ошибка "Неизвестное имя" при сохранении данных таблицы StringGrid в Excel
При попытке сохранения данных таблицы StringGrid в Excel , появляется сообщение об ошибке - ...

При сохранении перенести данные из таблицы в Word в таблицу Excel
Добрый день! Подскажите, пожалуйста есть такая задача необходимо: -Из Excel файла открыть Word ...

Ошибка при сохранении данных из StringGrid в Excel
Добрый день! Возникает проблема при попытке сохранения данных из StringGrid в формате Excel ...

1
8 / 12 / 2
Регистрация: 25.12.2017
Сообщений: 280
27.05.2020, 06:59  [ТС] 2
Все, решил проблему, столбец из другой таблицы снова появился, нужно было использовать в RatingImport следующий код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
namespace App\Imports;
 
use App\Models\Rating;
use Illuminate\Support\Facades\Hash;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
 
class RatingsImport implements ToModel, WithHeadingRow
{
    /**
     * @param array $row
     *
     * @return Rating|null
     */
    public function model(array $row)
    {
        return new Rating([
            'student_id'   => $row['student_id'],
            'name'   => $row['student']['name'],
            'discipline'  => $row['discipline'],
            'mark'  => $row['mark']
        ]);
    }
}

И в RatingExport альтернативный метод map($rating)

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
 
namespace App\Exports;
 
use App\Models\Rating;
use Illuminate\Database\Query\Builder;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use PhpOffice\PhpSpreadsheet\Shared\Date;
 
class RatingsExport implements FromCollection, WithHeadings, WithMapping
{
    public function collection()
    {
        return Rating::with('student')->get();
    }
 
    public function map($rating): array
    {
        return [
            $rating->id,
            $rating->student_id,
            $rating->student->name,
            $rating->discipline,
            $rating->mark,
            $rating->created_at,
            $rating->updated_at,
        ];
    }
 
    public function headings(): array
    {
        return [
            'ID',
            'Student_ID',
            'Student.Name',
            'Discipline',
            'Mark',
            'Created At',
            'Updated At',
        ];
    }
}
Всем удачи!)
0
27.05.2020, 06:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2020, 06:59
Помогаю со студенческими работами здесь

Редактирование данных из таблицы Excel - ListBox выводит только один столбец
доброго времени суток! нашел очень хороший исходник по редактированию на этом форуме и подогнал...

Добавление данных в столбец при импорте из excel
Добрый день! Сейчас импортирую данные из excel в таблицу таким VBA кодом. Public Sub Import()...

Laravel 5: импорт данных из excel(xlsx) в базу
Всем доброго времени суток! Изучаю замечательный фреймворк Laravel относительно недавно (пару...

Laravel 6: коррекция авторизации и сохранения данных в БД и Excel
Аппаю предыдущую тему, так как почти завершил задание, но далее из моих знакомых никто не...

Ошибка при сохранении таблицы
Здравствуйте, помогите пожалуйста с проблемой. Нужно чтобы, изменения сделанные в таблице (в...

транформация даты при сохранении в Excel
При сохрании таблицы в эксель средствами 1с поля с датой трансформируются в число(исчезают все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru