laravel-expansions / query-control-model
QueryControlModel
v1.0.2
2022-07-25 17:57 UTC
README
无需GraphQL。这是您模型的高级查询控制。
扩展查询字符串参数
await axios.get('/api/my-models', { params: { /* Select and Append control */ select: 'id,name', // <-- select columns with: 'items.subItems', // <-- append with relation withCount: 'items', // <-- append relation count limit: 10, // <-- limit count /* Response type control */ count: true, // <-- count response // or paginate: 10, // <-- pagination count page: 1, // <-- pagination page // or // default: model list } })
安装
composer require laravel-expansions/query-control-model
自动设置 - 覆盖 artisan 模板
发布到 /stubs
模板文件。
php artisan vendor:publish --tag=expansion-qcm-stubs
接下来创建模型。
php artisan make:model SomeModel --controller --resource
手动设置
在您的模型上使用 QueryControlModel。
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use LaravelExpansions\QueryControlModel\Traits\QueryControlModel;// <-- add class MyModel extends Model { use HasFactory; use QueryControlModel;// <-- set public function scopeQueryFilter($query) { return $query;// add your local scopes } }
并在控制器方法上设置作用域。
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use App\Models\MyModel; class MyModelController extends Controller { public function index() { return MyModel ::queryControll() ->queryFilter() ->queryGet(); } public function show($id) { return MyModel ::queryControl() ->queryFilter() ->findOrFail($id); } ... }