rikless/xporter

CSV包装器,用于导出eloquent查询结果

2.0.2 2022-01-04 09:00 UTC

This package is auto-updated.

Last update: 2024-09-04 14:34:22 UTC


README

Xporter是一个CSV包装器,允许您使用league/csv包从Laravel应用程序中导出Eloquent查询结果。借助Laravel的Xporter类,您可以创建可导出的模式,这些模式可以轻松修改和重复使用。

文档

安装

运行

composer require rikless/xporter:1.*

示例用法

创建一个简单的类,您可以在应用程序的任何地方放置所有的导出参数。《App\Exports》可能是一个不错的选择,从这里开始。您需要扩展《Rikless\Xporter\Exportable》类。

现在完成《convert()`》、《query()`方法和《xportable》、《rootModel》属性。

您必须使用《convert()`方法来转换您的数据,并添加来自关系的数据。

在您的查询方法中,您只需要实例化您的模型并添加您的查询。它可以是控制器中的《Request》对象。请注意,在您的查询中不要使用《get()`或《all()`方法,因为该包将分块结果。这意味着它需要一个《Illuminate\Database\Eloquent\Builder》对象。

<?php

namespace App\Exports;

use Rikless\Xporter\Exportable;
use Carbon\Carbon;
use Illuminate\Http\Request;

class UsersExporter extends Exportable
{

    protected $xportable = ['email', 'uuid'];

    protected $rootModel = \App\User::class;

    public function convert($item)
    {
        return [
            'email' => $item->email,
            'uuid' => $item->name,
        ];
    }

    public function query(Request $request)
    {
        return (new $this->rootModel)->where('created_at', '<=', Carbon::now());
    }

}

现在在您的控制器中

<?php

namespace App\Http\Controllers;

use App\Exports\UsersExporter;
use Illuminate\Http\Request;

class TestController extends Controller
{
    public function store(UsersExporter $usersExporter, Request $request)
    {
        return $usersExporter->build($request);
    }
}

许可

在《MIT许可证》下许可