sujan/php-csv-exporter

一个用于将数据导出到CSV的PHP库

v2.1.2 2022-10-31 08:05 UTC

This package is auto-updated.

Last update: 2024-09-29 05:22:18 UTC


README

Packagist Version Packagist GitHub

概述

一个快速且小巧的PHP库,用于将数据导出到CSV。该库基于PHP生成器。

为什么使用

导出500万条数据只需5秒钟,所以你可以称它足够快。此外,由于使用了生成器,它使用的内存更少,并且永远不会遇到内存异常。

安装

composer require sujan/php-csv-exporter

基本用法

$columns = [ 'id', 'name', 'email' ];

$queryBuilder = User::limit(10); // Query Builder

$exporter = new Exporter();
$exporter->build($queryBuilder, $columns, 'users.csv')
         ->export();

构建和导出,就这么简单。

文档

构建CSV

CSV构建需要三个参数。第一个参数是模型,可以是ArrayPDOStatementEloquent Query BuilderCollection,第二个参数是你要导出的字段名称,第三个参数是CSV文件名。

$exporter->build($queryBuilder, $columns, 'users.csv');

导出CSV

$exporter->export();

使用示例

Laravel

你可以从Eloquent Query BuilderCollectionArray导出数据,其中强烈推荐使用Eloquent Query Builder

从Eloquent查询构建器(推荐)

$columns = [ 'id', 'name', 'email' ];

$queryBuilder = User::latest()->whereNotNull('email_verified_at'); // Query Builder

$exporter = new Exporter();
$exporter->build($queryBuilder, $columns, 'users.csv')
         ->export();

从集合

$columns = [ 'id', 'name', 'email' ];

$collection = User::latest()->get(); // Collection

$exporter = new Exporter();
$exporter->build($collection, $columns, 'users.csv')
         ->export();

从数组

$columns = [ 'id', 'name', 'email' ];

$usersArray = User::latest()->get()->toArray(); // Array of Users

$exporter = new Exporter();
$exporter->build($usersArray, $columns, 'users.csv')
         ->export();

Eloquent关系

$columns = [
    'id',
    'title',
    'user' => [ // user is a relation
        'name'
    ]
];

$queryBuilder = Post::with('user'); // Query builder

$exporter = new Exporter();
$exporter->build($queryBuilder, $columns, 'users.csv')
         ->export();

原始PHP

该库支持Laravel以及原始PHP。你可以轻松地从PDOStatementArray中导出数据。

从普通数组

$array = [
    ['id' => 1, 'name' => 'John Doe', 'email' => 'john@example.com'],
    ['id' => 2, 'name' => 'Jane Doe', 'email' => 'jane@example.com']
];

$columns = ['id', 'name', 'email'];

$exporter = new Exporter();
$exporter->build($array, $columns, 'users.csv')
         ->export();

从PDOStatement(推荐)

    $servername = "localhost";
    $username = "root";
    $password = "password";
    $dbname = "laravel";

    $columns = [
        'id',
        'name',
        'email'
    ];

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $stmt = $conn->prepare("SELECT id, name, email FROM users");
        $stmt->execute();

        // set the resulting array to associative
        $stmt->setFetchMode(PDO::FETCH_ASSOC);

        $exporter = new Exporter();
        $exporter->build($stmt, $columns, 'users.csv)
                 ->export();
    }
    catch(PDOException $e) {
        echo "Error: " . $e->getMessage();
    }
    $conn = null;

我们始终欢迎你的贡献