Я пытаюсь преобразовать дату с помощью laravel excel, ниже мой код:
<?php
namespace App\Exports;
use App\Project;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithTitle;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
class ProjectExport implements FromCollection, WithHeadings, WithMapping, ShouldAutoSize, WithTitle, WithEvents, WithColumnFormatting
{
public function collection()
{
return Project::with('developer_projects')->get();
}
// Select data from query and set its position
public function map($project): array
{
return [
$project->name,
Date::dateTimeToExcel($project->created_at),
Date::dateTimeToExcel($project->start_date),
Date::dateTimeToExcel($project->expiry_date),
];
}
// Set Date Format
public function columnFormats(): array
{
return [
'E' => NumberFormat::FORMAT_DATE_DDMMYYYY,
'F' => NumberFormat::FORMAT_DATE_DDMMYYYY,
'G' => NumberFormat::FORMAT_DATE_DDMMYYYY,
];
}
}
Так что мне удается преобразовать поля create_at и expiry_date, но по какой-то причине моя начальная дата не удаетсябыть преобразованным, и я получаю эту ошибку:
Аргумент 1 передан PhpOffice \ PhpSpreadsheet \ Shared \ Date :: dateTimeToExcel () должен реализовывать интерфейс DateTimeInterface, строка дана
Я проверил в своей базе данных его поле даты.
start_date и expiry_date - это поле даты, а create_at - отметка времени
, если я преобразую Excel по умолчанию, expiry_date и creation_at:
2019-09-27 18: 54: 54
пока начальная дата выглядит так:
2014-10-22