heseya / laravel-searchable
Search trait for Eloquent models
Installs: 3 796
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 5
Forks: 0
Open Issues: 0
Requires
- php: >=7.3
- illuminate/database: >=7.0
Requires (Dev)
- pestphp/pest: ^1.21
This package is auto-updated.
Last update: 2025-02-14 17:25:54 UTC
README
🔍 Search trait for Eloquent models.
Installation
$ composer require heseya/laravel-searchables
How to use it?
class User extends Model { use HasCriteria; protected $criteria = [ 'id', // default criterion 'email' => Equals::class, 'name' => Like::class, 'description' => Custom::class, ]; }
class Controller { function index(Request $request) { User::searchByCriteria([ 'email' => 'example@example.com', 'name' => 'John' ])->get(); // you can extend query User::searchByCriteria($request->all()) ->where('public', true) ->get(); } }
Available criteria
- Equals
- Like
Custom criterion
final class CustomCriterion extends Criterion { public function query(Builder $query): Builder { // do whatever you want return $query; } }
Change default criterion in model
class User extends Model { protected function getDefaultCriterion(): string { return Equals::class; } }
Testing
To run the tests, run the following command from the project folder.
$ composer test
License
Package released under the MIT License. See the LICENSE file for details.