A Laravel package to write, easy and flexible Eloquent query builder.
composer install fbsouzas/flery-builder
<?php
use Fbsouzas\FleryBuilder\FleryBuilder;
use Illuminate\Http\Request;
return FleryBuilder::to(User::class)
->apply($request->all())
->get();
// or
return FleryBuilder::to(User::class)
->apply([
'where' => [
'name' => 'Joe Doe',
],
])
->get();
You can use FleryBuilder combine with other Laravel query builder functions.
For example:
<?php
use Fbsouzas\FleryBuilder\FleryBuilder;
use Illuminate\Http\Request;
return FleryBuilder::to(User::class)
->apply($request->all())
->where(['name' => 'Joe Doe'])
->get();
// or
return FleryBuilder::to(User::class)
->apply($request->all())
->join('contacts', function ($join) {
$join->on('users.id', '=', 'contacts.user_id')
->where('contacts.user_id', '>', 5);
}))
->get();
// or
return FleryBuilder::to(User::class)
->apply($request->all())
->whereJsonContains('options->languages', ['en', 'br'])
->get();
// and etc.
// That will return only the user's first name.
GET /api/users?fields=first_name
// or
// That will return only the user's first name and last name.
GET /api/users?fields=first_name,last_name
// That will return the user and his contact information.
GET /api/users?with=contact
// or
// That will return the user and his contact information and posts.
GET /api/users?with=contact;posts
// or
// That will return the user and just his posts title.
GET /api/users?with=posts:id,title
// That will return all users that have joe in their first names.
GET /api/users?search[first_name]=joe
// That will return a user's list ascendant ordered by the first name.
GET /api/users?sort=first_name
// or
// That will return a user's list descendant ordered by the first name.
GET /api/users?sort=-first_name
- This package needs PHP 7.4 or above.
composer test
*This package was inspired by Spatie's Laravel Query Builder
The MIT License (MIT). Please see License File for more information.