Installation
Install via Composer:
composer require raise-studio/import
Register the Plugin
Add the plugin to your PanelProvider to enable the Import Log resource (Pro):
use RaiseStudio\Import\RaiseImportPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(RaiseImportPlugin::make());
}
Quick Start
The simplest way to add import to any Filament table:
use RaiseStudio\Import\Actions\ImportAction;
public static function table(Table $table): Table
{
return $table
->headerActions([
ImportAction::make()
->model(User::class),
]);
}
Full Configuration
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;
});
Configuration
Publish the config file:
php artisan vendor:publish --tag=raise-import-config
Available options (config/raise-import.php):
'chunk_size' => 500, // Rows per transaction
'duplicate_behavior' => 'skip', // skip | update | error
'max_file_size' => 50, // MB
'preview_limit' => 10, // Preview rows
'allowed_extensions' => ['csv', 'xlsx', 'ods'],
// Pro license
'license_key' => env('RAISE_IMPORT_LICENSE_KEY'),
'license_verify_url' => env('RAISE_IMPORT_LICENSE_VERIFY_URL',
'https://license.raise-studio.com/api/license/verify'
),
Requirements
- PHP 8.1+
- Filament 4.x or 5.x
- Livewire 3.x (Filament 4) or 4.x (Filament 5)
Field API
Field::make('email')
->label('Email Address') // Display label
->rules('email|unique:users') // Validation rules
->default('') // Default value
->options(['a', 'b', 'c']) // Dropdown options
->required(); // Mark as required
| Method | Description |
|---|---|
make('key') |
Field key matching the database column |
label('...') |
Display label shown in the UI |
rules('...') |
Laravel validation rules |
default('...') |
Default value when column is empty |
options([...]) |
Dropdown options for selection |
required() |
Mark the field as required |
Pro Features
Pipeline System
Add global and field-level pipes to transform data during import:
ImportAction::make()
->model(User::class)
// Global pipes — applied to every row
->pipe(new TrimStringsPipe())
->pipe(new LowercasePipe())
// Field-level pipes — applied to specific columns
->fieldPipe('password', new BcryptPipe())
->fieldPipe('birthday', new DateFormatPipe('Y-m-d'));
Import History
Track every import with full CRUD, statistics, and error reports. Accessible via the Import Log resource registered through RaiseImportPlugin.
Queue Support
Large imports (>5,000 rows) are automatically dispatched to the queue. Configurable via:
'queue.enabled' => true,
'queue.threshold' => 5000,
REST API
Pro edition includes 5 API endpoints (authenticated via auth middleware):
| Method | Endpoint | Description |
|---|---|---|
POST |
/raise-import/upload |
Upload file, get headers + preview |
POST |
/raise-import/preview |
Preview mapped data |
POST |
/raise-import/import |
Execute import |
GET |
/raise-import/template/{model} |
Download CSV template |
GET |
/raise-import/errors/{id}/download |
Download error report |
Translations
Publish translations to customize or add new languages:
php artisan vendor:publish --tag=raise-import-translations
Built-in languages: English (en) and Simplified Chinese (zh_CN).