kakposoe / laravel-csv-to-model
Eloquent 辅助工具,直接将 CSV 数据导入模型
1.2
2020-01-02 14:53 UTC
Requires
- box/spout: ^3.0
- illuminate/support: 5.8.*|^6.0
Requires (Dev)
- mockery/mockery: ^1.1
- orchestra/testbench: ~3.0
- phpunit/phpunit: ^7.0
- sempro/phpunit-pretty-print: ^1.0
This package is auto-updated.
Last update: 2024-09-26 05:59:22 UTC
README
Laravel Eloquent 辅助工具,直接将 CSV 数据导入模型。
幕后,该软件包包装了 box/spout 软件包以迭代导入的 CSV。
安装
通过 Composer
$ composer require kakposoe/laravel-csv-to-model
用法
您必须在希望导入 CSV 数据的模型中使用 CsvToModel
特性
<?php namespace App; use Kakposoe\CsvToModel\Traits\CsvToModel; class YourModel extends Model { use CsvToModel; ... }
该软件包提供了一个表达式的 API,通过 Eloquent 命令将整个 CSV 导入数据库进行准备和处理。
$csv = Model::csv($path) $csv->import();
第一个参数期望 CSV 文件的路径。之后,运行 ->import()
将所有行导入数据库。
更改字段名称
默认情况下,CSV 文件的第一行将用于确定要填充的模型字段。字段名称将自动更改为 snake_case
。
如果您需要更改字段名称,可以使用 ->headers()
方法并传递一个数组以映射字段名称
$csv->headers(['Email Address' => 'email'])
注意:如果字段名称不在传递给 ->headers()
方法的数组中,它将默认为原始的、snake_case
版本的字段。
指定要导入的字段
您可以使用 ->only()
方法指定应导入哪些字段
$csv->only('first_name', 'last_name', 'email', 'contact_number')
注意:如果与 ->headers()
一起使用,这将是指定的 映射名称,而不是原始名称。
格式化值
可以通过使用 ->format()
方法在每次插入之前对值进行格式化
$csv->format('first_name', function($value) { return strtoupper($value); })
第一个参数是目标字段(如果字段名称已更改,则使用 ->headers()
,使用 映射名称)。第二个参数应该是一个闭包,返回格式化后的数据。