laravel-expansions / query-control-model
QueryControlModel
Package info
github.com/laravel-expansions/query-control-model
Type:project
pkg:composer/laravel-expansions/query-control-model
v1.0.2
2022-07-25 17:57 UTC
Requires
None
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
No need GraqhQL. This is power query controll for your model.
Extend Query String Parameters
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 } })
Install
composer require laravel-expansions/query-control-model
Auto Setup - Overriding artisan template
Publish to /stubs template files.
php artisan vendor:publish --tag=expansion-qcm-stubs
Next create model.
php artisan make:model SomeModel --controller --resource
Manual Setup
use QueryControlModel on your model.
<?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 } }
And set scopes on your controller methods.
<?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); } ... }