kyrax324 / laravel-queriplex
A simple package to help building query builder between request inputs and allowed rules.
Installs: 1 311
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: >=7.2
README
A simple package to help building query builder between request inputs and allowed rules.
Installation
composer require kyrax324/laravel-queriplex
Usage
Generating Queriplex Classes
Generate a queriplex class for User
model
php artisan make:queriplex UserQueriplex
** You may also publish the stub template file for customize purpose.
php artisan queriplex:publish-stub
Setup Filter & Sort Rules
Fill up the necessarily filtering and sorting rules in the UserQueriplex.php
Example:
public $sortingKey = "sortBy"; // #1 public function filterRules() { return [ // with callback function 'country' => function($query, $value){ $query->where("country_code", $value); }, // with shortcut alias 'country' => 'country_code', // when isset 'country', where "country_code" = $value ]; } public function sortRules() { return [ "alphabet_asc" => fn ($query) => $query->orderBy('name', "ASC"), "alphabet_desc" => fn ($query) => $query->orderBy('name', "DESC"), "latest" => fn ($query) => $query->orderBy('created_at', "DESC"), ]; }
Use Case Example
To get a result of users where country_code = "ABC" order by latest created time
UserController.php
use App\Queriplex\UserQueriplex; ... // payload from request->validated() $payload = [ "country" => "ABC", // similar to when(isset(payload['country']), $callback) "sortBy" => "latest", // sortingKey #1 ]; $query = User::query(); $query = UserQueriplex::make($query, $payload); $result = $query->get(); /** * As result, * filter rule "country_code" & sort rule "latest" will be applied * * SQL Statement: * SELECT * from `users` * WHERE `country_code` = "ABC" * ORDER BY `created_at` DESC */