Я запускаю скрипт, который сохраняет собранные данные в csv. Это работает так:
$responce = Excel::store(new UsersExport($formatted_data), 'fileName.csv', null, \Maatwebsite\Excel\Excel::CSV);
И это мой класс:
class UsersExport implements FromArray
{
protected $invoices;
public function __construct(array $invoices)
{
$this->invoices = $invoices;
}
public function array(): array
{
return $this->invoices;
}
}
Пока имя файла жестко запрограммировано, и я хочу сделать его динамическим. Он должен меняться с указанием года и месяца каждый раз, когда я запускаю новый экспорт (2020-01.csv или что-то в этом роде). Скрипт работает с двумя параметрами - год и месяц.
protected $signature = 'select:values {--year=} {--month=}';
В предложении where я фильтрую так:
->whereMonth('ut', $this->option('month'))
->whereYear('ut', $this->option('year'))
Пробовал с
Excel::store(new UsersExport($formatted_data)->withFilename()
Но это не работает... Я пока не нашел ничего похожего на свое решение. Любые идеи о том, как это исправить? Спасибо!






Можешь попробовать этот?
$responce = Excel::store(new UsersExport($formatted_data), now()->format('Y-m').'.csv', null, \Maatwebsite\Excel\Excel::CSV);
ты пробовал Excel::store(new UsersExport($formatted_data), $this->option('month').'-'.$this->option('year'), null, \Maatwebsite\Excel\Excel::CSV);
Да конечно так - $this->option('filename') и добавление опции в команду {--filename}. Но это не очень динамично, не так ли (:
Мое решение: С простой конкатенацией php...
$fileName = $this->option('year')."-".$this->option('month').".csv";
И поместите переменную в экспорт следующим образом:
$responce = Excel::store(new UsersExport($formatted_data), $fileName ,null, \Maatwebsite\Excel\Excel::CSV);
Это имя файла с текущим годом и месяцем
2022-10.csv. Игнорирование параметров