Laravel Packages

Laravel Pipeline Query Collection

Published
Laravel Pipeline Query Collection image

The Laravel Pipeline Query Collection package contains a collection of Eloquent query filters for pipelines. Given a complex query of filters, the code can get a bit unwieldy around query conditions:

$users = User::query()
->when($request->name ?? null, function($query, $name) {
$query->where('name', 'like', "%$name%");
})
->when($request->is_admin ?? null, function($query, $isAdmin) {
$query->where('is_admin', $isAdmin ? 1 : 0);
})
->when($request->created_at_from ?? null, function($query, $date) {
$query->where('created_at', '>=', $date);
})
->when($request->created_at_to ?? null, function($query, $date) {
$query->where('created_at', '<=', $date);
})
->get();

Using this package could be written as follows:

use Baro\PipelineQueryCollection;
 
// users?name=Baro&is_admin=1&created_at_from=2022-06-01&created_at_to=2022-06-31
$users = Users::query()->filter([
new PipelineQueryCollection\RelativeFilter('name'),
new PipelineQueryCollection\BooleanFilter('is_admin'),
new PipelineQueryCollection\DateFromFilter('created_at'),
new PipelineQueryCollection\DateToFilter('created_at'),
])
->get();

At the time of writing, this package contains the following filters:

  • Bitwise
  • Boolean
  • Date from
  • Date to
  • Exact
  • Relation
  • Relative
  • Scope
  • Sort

You can get started with this package on GitHub at l3aro/pipeline-query-collection. The package's author also wrote a more in-depth article—Building a sexy query filter—which walks you through the idea behind the package.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article