apichef / laravel-request-to-eloquent
轻松将请求查询字符串转换为 Eloquent 查询。
v1.0.1
2021-03-28 17:26 UTC
Requires
- php: ~7.4 || ^8.0
- apichef/laravel-request-query-helper: ^2.1
Requires (Dev)
- laravel/legacy-factories: ^1.1
- orchestra/testbench: ^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
- squizlabs/php_codesniffer: ^3.5
This package is auto-updated.
Last update: 2024-08-29 01:19:24 UTC
README
轻松将请求查询字符串转换为 Eloquent 查询。
安装
通过 Composer
$ composer require apichef/laravel-request-to-eloquent
我们使用 apichef/laravel-request-query-helper
包作为依赖。您可以使用以下命令发布其配置文件:
$ php artisan vendor:publish --provider="ApiChef\RequestQueryHelper\RequestQueryHelperServiceProvider"
基本用法
模型类
namespace App; use App\Comment; use App\Tag; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $dates = [ 'published_at', ]; public function comments() { return $this->hasMany(Comment::class); } public function tags() { return $this->belongsToMany(Tag::class); } public function scopeDraft(Builder $builder) { return $builder->whereNull('published_at'); } }
请求查询类
namespace App\Queries; use App\Post; use ApiChef\RequestToEloquent\QueryBuilderAbstract; use Illuminate\Http\Request; class PostListQuery extends QueryBuilderAbstract { protected function init(Request $request) { return Post::query(); } protected $availableIncludes = [ 'comments', 'tags', ]; protected $availableFilters = [ 'draft', ]; protected $availableSorts = [ 'published_at', ]; }
控制器
namespace App\Http\Controllers; use App\User; use App\Queries\PostListQuery; class DashboardController extends Controller { public function index(PostListQuery $postListQuery) { return $postListQuery ->parseAllowedIncludes([ 'comments', 'tags', ]) ->get() ->toArray(); } }
HTTP 请求
GET /posts?include=comments,tags&filter[draft]&sort=-published_at
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CODE_OF_CONDUCT。
安全
如果您发现任何安全相关的问题,请通过电子邮件 milroy@outlook.com 而不是使用问题跟踪器来报告。
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。