sujan / php-csv-exporter
一个用于将数据导出到CSV的PHP库
v2.1.2
2022-10-31 08:05 UTC
Requires
- php: >=5.5.0
- ext-pdo: *
This package is auto-updated.
Last update: 2024-09-29 05:22:18 UTC
README
概述
一个快速且小巧的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构建需要三个参数。第一个参数是模型,可以是Array
、PDOStatement
、Eloquent Query Builder
和Collection
,第二个参数是你要导出的字段名称,第三个参数是CSV文件名。
$exporter->build($queryBuilder, $columns, 'users.csv');
导出CSV
$exporter->export();
使用示例
Laravel
你可以从Eloquent Query Builder
、Collection
和Array
导出数据,其中强烈推荐使用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。你可以轻松地从PDOStatement
和Array
中导出数据。
从普通数组
$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;