kakposoe/laravel-csv-to-model

Eloquent 辅助工具,直接将 CSV 数据导入模型

1.2 2020-01-02 14:53 UTC

README

Laravel Eloquent 辅助工具,直接将 CSV 数据导入模型。

Build Status StyleCI

幕后,该软件包包装了 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(),使用 映射名称)。第二个参数应该是一个闭包,返回格式化后的数据。

致谢