akr4m / scoping
This scopes allow you to add constraints to all queries for a given model. Filter your data easily.
v1.0.2
2021-10-25 20:57 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-10-26 03:45:44 UTC
README
This scopes allow you to add constraints to all queries for a given model. Filter your data easily.
Installation
Simply add the package to your composer.json
file and run composer update
.
composer require akr4m/scoping
Usage
Add the trait to your model and your search rules.
use akr4m\scoping\Traits\CanBeScoped; class Post extends Model { use CanBeScoped; }
Add scopes in abcController.php
like this
public function __invoke(Request $request) { $posts = App\Post::withScopes($this->scopes())->get(); } protected function scopes() { return [ // Must declare the `Scope` files 'topic' => new TopicScope(), 'month' => new MonthScope(), 'year' => new YearScope(), ]; }
TopicScope.php
file would be like this
use akr4m\scoping\Scoping\Contracts\Scope; use Illuminate\Database\Eloquent\Builder; class TopicScope implements Scope { public function apply(Builder $builder, $value) { return $builder ->whereHas('topics', function ($builder) use ($topic) { $builder->where('slug', $value); }); } }