heseya/laravel-searchable

Search trait for Eloquent models

2.0.0 2022-03-14 10:36 UTC

This package is auto-updated.

Last update: 2024-05-14 15:49:49 UTC


README

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.