coder-packages/scope-filtering

dev-master 2019-03-10 14:42 UTC

This package is auto-updated.

Last update: 2024-06-19 04:03:14 UTC


README

Scope filtering in Laravel

Add trait into models

use Larapackages\ScopeFiltering\Traits\Filterable;

class User
{
	use Filterable;
}

Create a Scope

namespace App\Filters;

use Illuminate\Database\Eloquent\Builder;
use Larapackages\ScopeFiltering\Scope;

class ContainsScope extends Scope
{
    protected $field;

    /** this is not required */
    public function __construct(string $field)
    {
        $this->field = $field;
    }

    public function filter(Builder $query, $value)
    {
        return $query->where($this->field, 'ilike', "%". mb_strtolower($value) . "%");
    }
}

Use in searches

use App\Filters\ContainsScope;

User::filterBy([
    'name' => ContainsScope // or 'name' => new ContainsScope('name')
])->get();