allanvb-noor/nova-exports

Package that allow you to export Laravel Nova resources.

1.1.3 2022-10-28 19:21 UTC

This package is auto-updated.

Last update: 2024-10-28 23:31:20 UTC


README

Laravel Nova package to export resources

Packagist Version GitHub last commit License Sonar

This package adds and universal export action to your nova application.

Requirements

  • laravel/nova: ^3.0
  • gobrightspot/nova-detached-actions: ^1.1
  • optimistdigital/nova-multiselect-field: ^2.0
  • kpolicar/nova-date-range: dev-master
  • rap2hpoutre/fast-excel: ^2.5

Usage

To use the export action, you must add it to actions method of your resource.

use Allanvb\NovaExports\ExportResourceAction;

public function actions(Request $request): array
{
    return [
        new ExportResourceAction($this),
    ];
}

Available methods

  • only(array $columns) - Define whitelist of fields that can be exported.
  • except(array $columns) - Excludes the given fields from exporting list.
  • filename(string $name) - Sets the download filename.
  • withUserSelection() - Enables multi-select field that allow user to select the columns when exporting.
  • usesDateRange(string $columnName) - Enables field that allow user to select the range of dates when exporting. Default: created_at
  • usesGenerator() - Enables cursor usage when getting data from database.
  • queryBuilder(callable $query) - Use own query on data exportation.
  • disk(string $disk) - The storage you want to use for storing export files.

withUserSelection method cannot be used together with queryBuilder method.

You are also able to use all of Nova Action methods, and all of Detached Actions methods on ExportResourceAction.

Exceptions

The package can throw the following exceptions:

To do

  • Export single resource
  • Implement user selection export
  • Implement generator on exporting
  • Add way to perform joins on export
  • Add Eloquent relations export
  • Add option to export to PDF

License

The MIT License (MIT). Please see License File for more information.