stianscholtz / laravel-data-table
一个用于创建数据表的Laravel包。
1.1.2
2024-06-26 11:00 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.0 || ^11.0
- stianscholtz/query-exporter: ^0.0.2
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)。有关更多信息,请参阅许可文件。