stianscholtz/laravel-data-table

一个用于创建数据表的Laravel包。

1.1.2 2024-06-26 11:00 UTC

This package is auto-updated.

Last update: 2024-09-26 11:26:13 UTC


README

这个无头Laravel包提供了在您的Laravel应用程序中创建和管理数据表的便捷方式。它支持各种列类型,包括布尔值、日期、枚举、数字和文本,您可以使用它快速设置和自定义数据表以适应您的需求。

功能

  • 列类型:支持布尔值、日期、枚举、数字和文本列。
  • 数据表生成:包括一个命令,用于在app/DataTables目录中生成具有默认模板的数据表。
  • 搜索过滤:支持根据提供的搜索词过滤数据。
  • 导出功能:内置轻松导出查询结果的功能。

安装

您可以通过Composer安装此包。只需运行以下命令

composer require stianscholtz/laravel-data-table

用法

生成数据表

要生成数据表,请使用提供的Artisan命令

php artisan make:data-table YourDataTableProvider

定义数据表

在您的数据表类中,您定义查询和列。例如

use Illuminate\Contracts\Database\Query\Builder;
use Stianscholtz\LaravelDataTable\DataTableBuilder;
use Stianscholtz\LaravelDataTable\DataTableProvider;
use DB;

class YourDataTableProvider extends DataTableProvider
{
    protected bool $exportable = false;

    public function query(): Builder
    {
        /** @var Model $model */
        $model = request()->route('model');

        return DB::table('users')
        ->where('condition1', 'value')
        ->where('condition2', request('value'))
        ->when($model, fn(Builder $query) => $query->where('condition3', 'value'))
        ->select('users.id');//If you want to include the id in the data set.
    }

    public function columns(DataTableBuilder $builder): void
    {
        $builder->numberColumn('users.id', 'id', 'ID');

        if (!request()->route('model')) {
            $builder->textColumn('model.field', 'field', 'Field Name', false);
        }

        $builder->textColumn('users.name', 'user', 'User')
            ->enumColumn('users.status', 'status', 'Status')
            ->booleanColumn('IF(users.active, \'Yes\', \'No\')', 'active', 'Active')
            ->dateColumn('users.updated_at', 'updated_at', 'Updated At');
    }
}

控制器

public function index()
{
    return view('view.name', [
        'variable' => 'value',
        ...YourDataTableProvider::get(),
    ]);
    //OR
    return view('view.name', YourDataTableProvider::get(['variable' => 'value']));
}

数据过滤

该包自动处理基于提供的搜索词的数据过滤。只需在请求中传递一个'term',该包就会相应地过滤数据。

数据导出

当$exportable为true且请求中存在值为'1'的'export'键时,该包将自动处理数据导出。$exportable的值也将可用于客户端,以确定是否应显示导出按钮。

贡献

欢迎贡献!请随时提交拉取请求。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件