使用文档

安装、配置和使用 Raise Import 的全部指南。

安装

通过 Composer 安装:

composer require raise-studio/import

注册插件

在 PanelProvider 中添加插件,启用导入历史功能(专业版):

use RaiseStudio\Import\RaiseImportPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(RaiseImportPlugin::make());
}

快速开始

给任何 Filament 表格添加导入功能的最简方式:

use RaiseStudio\Import\Actions\ImportAction;

public static function table(Table $table): Table
{
    return $table
        ->headerActions([
            ImportAction::make()
                ->model(User::class),
        ]);
}

完整配置

ImportAction::make('import')
    ->model(User::class)
    ->label('Import Users')
    ->fields([
        Field::make('name')->label('Name')->required(),
        Field::make('email')->label('Email')->rules('email|unique:users'),
        Field::make('phone')->label('Phone')->rules('numeric'),
    ])
    ->uniqueBy('email')
    ->onDuplicate('skip')
    ->chunkSize(500)
    ->rules([
        'name' => 'required|string|max:100',
        'email' => 'email|max:255',
    ])
    ->mutateBeforeCreate(function (array $row) {
        $row['password'] = bcrypt('default123');
        return $row;
    });

配置

发布配置文件:

php artisan vendor:publish --tag=raise-import-config

可用配置项(config/raise-import.php):

'chunk_size' => 500,              // 每事务处理行数
'duplicate_behavior' => 'skip',   // skip | update | error
'max_file_size' => 50,            // MB
'preview_limit' => 10,            // 预览行数
'allowed_extensions' => ['csv', 'xlsx', 'ods'],

// 专业版授权
'license_key' => env('RAISE_IMPORT_LICENSE_KEY'),
'license_verify_url' => env('RAISE_IMPORT_LICENSE_VERIFY_URL',
    'https://license.raise-studio.com/api/license/verify'
),

环境要求

  • PHP 8.1+
  • Filament 4.x 或 5.x
  • Livewire 3.x(Filament 4)或 4.x(Filament 5)

字段 API

Field::make('email')
    ->label('Email Address')       // 显示标签
    ->rules('email|unique:users')  // 验证规则
    ->default('')                   // 默认值
    ->options(['a', 'b', 'c'])     // 下拉选项
    ->required();                   // 标记为必填
方法 说明
make('key') 字段键名,对应数据库列
label('...') 界面中显示的标签
rules('...') Laravel 验证规则
default('...') 列数据为空时的默认值
options([...]) 下拉选择选项
required() 标记该字段为必填

专业版功能

管道系统

添加全局和字段管道,在导入过程中转换数据:

ImportAction::make()
    ->model(User::class)
    // 全局管道 — 应用到每一行
    ->pipe(new TrimStringsPipe())
    ->pipe(new LowercasePipe())
    // 字段管道 — 只应用到指定列
    ->fieldPipe('password', new BcryptPipe())
    ->fieldPipe('birthday', new DateFormatPipe('Y-m-d'));

导入历史

记录每次导入,支持完整 CRUD、统计和错误报告。通过 RaiseImportPlugin 注册的导入历史资源页面查看。

队列支持

大数据量(>5,000 行)自动分发到队列处理。可通过以下配置调整:

'queue.enabled' => true,
'queue.threshold' => 5000,

REST API

专业版包含 5 个 API 端点(通过 auth 中间件认证):

方法 端点 说明
POST /raise-import/upload 上传文件,返回表头及预览
POST /raise-import/preview 预览映射后的数据
POST /raise-import/import 执行导入
GET /raise-import/template/{model} 下载 CSV 模板
GET /raise-import/errors/{id}/download 下载错误报告

翻译

发布翻译文件以自定义或添加新语言:

php artisan vendor:publish --tag=raise-import-translations

内置语言:英文(en)和简体中文(zh_CN)。