Skip to content

Query BuilderEloquent queries from API requests

The filter[], sort, include and fields[] query parameters are checked against an allow-list and applied to an Eloquent query.

UserController.php
GET /users?fields[users]=name&fields[posts]=title&include=posts
QueryBuilder::for(User::class)
    ->allowedFields('name', 'posts.title')
    ->allowedIncludes('posts')
    ->get();
select "users"."name", "users"."id" from "users"
select "posts"."title", "posts"."user_id" from "posts"
  where "posts"."user_id" in (1, 2, 3)
   relation keys added automatically

Installation ​

bash
composer require myprogs/query-builder

Requires PHP 8.3 or newer and Laravel 12 or 13. The service provider is auto-discovered. Continue with the documentation.