heseya/laravel-searchable

Search trait for Eloquent models
4,471 2
Install
composer require heseya/laravel-searchable
Latest Version:2.0.0
PHP:>=7.3
Laravel:7 · 8 · 9
License:MIT
Last Updated:Mar 14, 2022
Links: GitHub  ·  Packagist
Maintainer: bvlinsky

Heseya\Searchable

Made by Heseya StyleCI Packagist Version Total Downloads Software License

🔍 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.

Related Packages

doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

648,266,899 9,701
laravel/framework

The Laravel Framework.

598,760,099 34,966
laravel/tinker

Powerful REPL for the Laravel framework.

507,193,856 7,441
laravel/serializable-closure

Laravel Serializable Closure provides an easy and secure way to serialize closur...

423,477,751 607
nunomaduro/collision

Cli error handling for console/command-line PHP applications.

403,217,078 4,664

Version History

Version Released PHP Laravel License
2.0.0 >=7.3 >=7.0 MIT
1.0.0 >=7.3 >=7.0 MIT