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
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); } ... }