Aller au contenu principal
Version: Canary 🚧

🧩 CSV Export/Import

Introduction

Le module bowphp/csv permet d'exporter ou d'importer facilement des modèles (type Eloquent) au format CSV en s'appuyant sur league/csv.

Installation

composer require bowphp/csv

Exporter un modèle en CSV

Ajoutez le trait Bow\Csv\Csv à votre modèle :

app/Models/User.php
use Bow\Csv\Csv;
use Bow\Database\Barry\Model;

class User extends Model
{
use Csv;
}

Export basique

$user = new User();
$csv = $user->toCsv(); // Retourne une chaîne CSV

Export avec des colonnes spécifiques

$user = new User();
$user->setCsvHeaders(['id', 'name']);

$csv = $user->toCsv(); // N'inclura que id et name

Export vers un fichier

$user = new User();
$user->toCsv('users.csv'); // Télécharge users.csv

Importer un CSV dans un modèle

use Bow\Csv\CsvService;

$service = new CsvService();
$service->import(new User(), '/chemin/vers/fichier.csv', ['id', 'name', 'email']);

Importer directement via le modèle (importCsv)

$user = new User();
$user->setCsvHeaders(['id', 'name', 'email']);

// Importe chaque ligne du fichier CSV dans le modèle User
$user->importCsv('/chemin/vers/fichier.csv');

Helpers globaux

Deux fonctions sont exposées si vous préférez un appel fonctionnel :

app_export_model_to_csv(new User(), null, ['id', 'name']);
app_import_csv_to_model(new User(), '/chemin/vers/fichier.csv', ['id', 'name', 'email']);

Bonnes pratiques

  • Définissez les headers via setCsvHeaders() pour contrôler l'ordre et la liste des colonnes.
  • Vérifiez/validez les données entrantes avant import() (formats, valeurs attendues).
  • Les modèles doivent exposer toArray() de manière cohérente pour que les lignes soient correctement sérialisées.

Il manque quelque chose ?

Si vous rencontrez des problèmes avec la documentation ou si vous avez des suggestions pour améliorer la documentation ou le projet en général, veuillez déposer une issue pour nous, ou envoyer un tweet mentionnant le compte Twitter @bowframework ou sur directement sur le github.