Easily load model relations from frontend without changing your API
salamwaddah/laravel-relation-parser is a Laravel package for easily load model relations from frontend without changing your api.
It currently has 10 GitHub stars and 14.205 downloads on Packagist (latest version v1.4.0).
Install it with composer require salamwaddah/laravel-relation-parser.
Discover more Laravel packages by salamwaddah
or browse all Laravel packages to compare alternatives.
Last updated
composer require salamwaddah/laravel-relation-parser
| Version | Laravel | PHP | |---------|----------------|--------| | 1.x | 10, 11, 12, 13 | >= 8.1 | | 0.3.x | 8, 9 | >= 7.3 |
Allow your application to load any model relation in the response without the need of changing your API controllers.
Pass a comma separated relations to your http request.
Add a with param to your HTTP request
/users?with=orders,posts,anyOtherRelation
Add a with_count param to your HTTP request
/users?with_count=orders,anyOtherRelation,anotherRelationToCount,blaBlaBla
/users?with=orders&with_count=orders
use SalamWaddah\RelationParser\LoadsRelations;
use Illuminate\Http\Request;
class UsersController extends Controller
{
use LoadsRelations;
public function index(Request $request)
{
$users = User::query()
// .. your query logic here
->get();
// this line adds the relations/counts
$this->loadRelations($users, $request);
// return your results however you like
return response()->json($users);
}
}
[
{
"id": 1,
"name": "Salam",
"orders_count": 2,
"orders": [
{
"id": 2,
"product": "something",
"price": 100
},
{
"id": 1,
"product": "something else",
"price": 150
}
]
},
{
"id": 2,
"name": "Naren",
"orders_count": 1,
"orders": [
{
"id": 3,
"product": "something",
"price": 100
}
]
}
]
If with or with_count params are used for something else in your application then you can customize those params
in loadRelations() method.
$this->loadRelations($users, $request, 'customWithParam', 'custom_with_count_param');
composer test