stephen/chunk-export

该软件包最新版本(1.0.1)没有可用的许可证信息。

简单的块导出

1.0.1 2017-09-22 02:30 UTC

This package is auto-updated.

Last update: 2024-09-19 10:12:20 UTC


README

在项目中涉及到大数据量的导出时,使用传统的页面导出方式很容易导致内存溢出,通常情况下采用分页导出的方式,循环读取数据,输出到缓存区。

环境要求

1.Laravel 5.1以上

2.PHP5.6以上

安装package

这是一个标准的 Composer 包,您可以通过以下命令行直接安装:

composer require stephen/chunk-export

或者在你的 composer.json 文件中添加

"stephen/chunk-export" : "~1.0.0",然后执行 composer install。

配置

注册Service Provider

在config/app.php中添加provider

  'providers' => [
        \Stephen\Chunk\ChunkServiceProvier::class,

    ],

在Laravel中使用案例

 <?php

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use Stephen\Chunk\Service\ChunkService;

class Export extends Controller
{
    //
    /**
     * @var ChunkService
     */
    private $chunkService;
    /**
     * @var User
     */
    private $user;

    /**
     * Export constructor.
     * @param ChunkService $chunkService
     */
    public function __construct(ChunkService $chunkService, User $user)
    {
        $this->chunkService = $chunkService;
        $this->user = $user;
    }

    public function index()
    {
        $config['models'] = $this->user->select('id', 'name', 'email')->orderBy('id', 'DESC');
        $config['headers'] = ['姓名', '邮箱'];
        $config['filename'] = '用户信息.csv';
        $pageSize = 10;

        $callback = function ($user) {
            $output = [];

            $output['name'] = iconv('UTF-8', 'GBK', $user['name']);
            $output['email'] = iconv('UTF-8', 'GBK', $user['email']);
            return $output;

        };
        $this->chunkService->exportCsv($config, $callback, $pageSize);


    }
}