elliotghorbani / laravel-spreadsheet
从数据库导出并导入
Requires
- php: ^8.0
- ext-json: *
- illuminate/database: ^8.0
- illuminate/foundation: ^8.0
- illuminate/http: ^8.0
- illuminate/routing: ^8.0
- illuminate/support: ^8.0
- illuminate/validation: ^8.0
This package is auto-updated.
Last update: 2024-09-13 20:10:15 UTC
README
关于此包
此包允许您将数据库动态导出为CSV。
注意:尚未添加导入功能。
安装
composer require elliotghorbani/laravel-spreadsheet
php artisan vendor:publish --provider="ElliotGhorbani\LaravelSpreadsheet\SpreadsheetServiceProvider"
在生成的配置文件中,您可以在"spreadsheet_table"键下覆盖表名。
php artisan migrate
使用方法
-
向"/spreadsheet/tables"发送GET请求。它返回您的数据库中的所有表。
-
向"/spreadsheet/columns"发送带有参数"table_name"的POST请求。
{ "table_name": "users" }
它返回指定表的所有列。然后您可以选择所需的列及其位置以包含在电子表格中。请参阅注意6。
- 向"/spreadsheet/filter-columns"发送带有参数"table_name"的POST请求。
{ "table_name": "users" }
它返回可以过滤的指定表的所有列及其数据类型,以便您生成一个表单。请参阅注意7。
- 向"/spreadsheet"发送以下参数的POST请求。
{ "table_name": "users", "export_data": { "columns": {"2": "id", "1": "email", "3": "username"}, "filters": [ {"column": "id", "operator": "<", "value": "60"} ] }, "import_data": [] }
您所需的标准现在已创建在数据库中。因此,您可以稍后再次使用它。
- 向"/spreadsheet/export/{export}"发送GET请求。
返回包含应用了过滤器的所需列及其位置的CSV文件。
注意1:"/spreadsheet"是一个RESTful路由。
注意2:支持的操作符是"="、"!=", "<", ">", "<>"。最后一个操作符("<>")作为在之间。
{ "table_name": "users", "export_data": { "columns": {"2": "id", "1": "email", "3": "username"}, "filters": [ {"column": "id", "operator": "<>", "value": ["60", "100"]} ] }, "import_data": [] }
注意3:您可以在配置中添加中间件和前缀到该包的路由。
注意4:您可以在配置中更改CSV分隔符。
注意5:如果您想修改返回的行(例如取消设置或添加列),您可以在您的Eloquent模型中实现HasCustomExportRow接口并将其添加到配置文件中的"table_model_map"键*。
class User extends Authenticatable implements HasCustomExportRow { public function getSpreadsheetExportRow(array $columns): array { $attributes = $this->attributes; unset($attributes['password']); if (array_search('full_name', $columns)) { $attributes['full_name'] = $this->people->first_name . ' ' . $this->people->last_name; } $result = []; foreach ($columns as $column) { $result[$column] = $attributes[$column]; } return $result; } }
注意6:如果您想取消设置列,以便用户无法请求它,您可以在您的Eloquent模型中实现HasCustomExportAvailableColumns接口。
class User extends Authenticatable implements HasCustomExportAvailableColumns { public static function getSpreadsheetExportAvailableColumns(): array { $columns = Schema::getColumnListing('users'); $passwordKey = array_search('password', $columns); unset($columns[$passwordKey]); $columns[] = 'full_name'; return $columns; } }
注意7:如果您想取消设置列,以便用户无法过滤它,您可以在您的Eloquent模型中实现HasCustomExportAvailableFilterColumns接口。
class User extends Authenticatable implements HasCustomExportAvailableFilterColumns { public static function getSpreadSheetExportAvailableFilterColumns(): array { $columns = Schema::getColumnListing('users'); $passwordKey = array_search('password, $columns); unset($columns[$passwordKey]); return $columns; } }
'table_model_map' => [ //'Table Name' => 'Eloquent Model Class' 'users' => 'App\Models\User\User', ],
贡献
感谢您考虑为Laravel Spreadsheet做出贡献!
许可
Laravel Spreadsheet是开源软件,许可证为MIT许可。