composer require salamwaddah/laravel-relation-parser
Version | Laravel | PHP |
---|---|---|
1.x | 10, 11 | >= 8.1 |
0.3.x | 8, 9, 10 | >= 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