miladshm / controller-helpers
该包最新版本(v0.8.21.1)没有可用的许可证信息。
特质中的资源控制器方法
v0.8.21.1
2024-09-29 11:03 UTC
Requires
- php: >=8.0
Requires (Dev)
- orchestra/testbench: ^8.5
- phpunit/phpunit: >=9.0
- dev-master
- v0.8.21.1
- v0.8.21
- v0.8.20.2
- v0.8.20.1
- v0.8.20
- v0.8.19
- v0.8.18
- v0.8.17
- v0.8.16
- v0.8.15
- v0.8.14
- v0.8.13
- v0.8.12
- v0.8.11
- v0.8.10.2
- v0.8.10.1
- v0.8.10
- v0.8.9.1
- v0.8.9
- v0.8.8
- v0.8.7
- v0.8.6
- v0.8.5
- v0.8.4
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.5
- v0.7.4
- v0.7.3
- v0.7.2
- v0.7.1
- v0.7.0
- v0.6.4
- v0.6.3
- v0.6.2
- v0.6.1
- v0.6
- v0.5
This package is auto-updated.
Last update: 2024-09-29 11:05:23 UTC
README
安装
composer require miladshm/controller-helpers
配置
php artisan vendor:publish --tag controller-helpers-config
使用
API 数据表
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; /** * Specifying the model class to use * * @return Model */ private function model(): Model { return new TestModel; } /** * Specifying extra data to send with index response * * @param Model|null $item * @return array|null */ private function extraData(Model $item = null): ?array { return []; } /** * Specifying Model relations to load with data * @return array */ private function relations(): array { return []; } }
设置过滤器
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; ... /** * @param Builder $builder * @return Builder|null */ protected function filters(Builder $builder): null|Builder { return $builder ->when('some_condition', fn(Builder $builder) => $builder->where('field', 'value')) ->when(\request()->filled('status'), function (Builder $builder) { $builder->where('status', \request()->input('status')); }) ->where('field2', 'value2')); } ... }
设置默认排序
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; /** * Order can be either 'asc' or 'desc', default value in 'desc' * @return string */ protected function getOrder(): string { return 'desc'; // value can be 'desc' or 'asc' } ... }
设置默认页面长度
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; /** * @return int */ protected function getPageLength(): int { return 15; } ... }
设置要包含在响应中的表列
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; /** * @return array|string[] */ public function getColumns(): array { return ['id', 'code', 'name']; } ... }
设置列和一级关系到搜索中
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; /** * @return array */ protected function getSearchable(): array { return ['id', 'code', 'name', 'relation.column']; // You can specify relation columns to search within } ... }
设置分页类型
您可以选择索引分页类型,包括默认、简单和游标分页器。
use Miladshm\ControllerHelpers\Http\Traits\HasApiDatatable; class TestController extends Controller { use HasApiDatatable; protected function getPaginator(): ?string { return 'simple'; // value can be [default,simple,cursor] } ... }