Easily translate request query string to Eloquent query.
apichef/laravel-request-to-eloquent is a Laravel package for easily translate request query string to eloquent query..
It currently has 2 GitHub stars and 54 downloads on Packagist (latest version v1.0.1).
Install it with composer require apichef/laravel-request-to-eloquent.
Discover more Laravel packages by apichef
or browse all Laravel packages to compare alternatives.
Last updated
Via Composer
$ composer require apichef/laravel-request-to-eloquent
We use apichef/laravel-request-query-helper package as a dependency. You can publish it's the config file with:
$ php artisan vendor:publish --provider="ApiChef\RequestQueryHelper\RequestQueryHelperServiceProvider"
Model class:
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');
}
}
Request query class:
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',
];
}
Controller:
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 request:
GET /posts?include=comments,tags&filter[draft]&sort=-published_at
Please see CHANGELOG for more information on what has changed recently.
$ composer test
Please see CONTRIBUTING and CODE_OF_CONDUCT for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.