diff --git a/src/Commands/FilterableDiscoverCommand.php b/src/Commands/FilterableDiscoverCommand.php index 6b4b454..a33c61b 100644 --- a/src/Commands/FilterableDiscoverCommand.php +++ b/src/Commands/FilterableDiscoverCommand.php @@ -4,7 +4,7 @@ use ReflectionClass; use Illuminate\Console\Command; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Schema; use Illuminate\Database\Eloquent\Model; diff --git a/src/Engines/Contracts/Appliable.php b/src/Engines/Contracts/Appliable.php index 5a8b9fb..700fd71 100644 --- a/src/Engines/Contracts/Appliable.php +++ b/src/Engines/Contracts/Appliable.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines\Contracts; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; interface Appliable { diff --git a/src/Engines/Contracts/Executable.php b/src/Engines/Contracts/Executable.php index 3697192..d516370 100644 --- a/src/Engines/Contracts/Executable.php +++ b/src/Engines/Contracts/Executable.php @@ -2,14 +2,14 @@ namespace Kettasoft\Filterable\Engines\Contracts; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; interface Executable { /** * Execute using the given query builder instance. - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return \Illuminate\Database\Eloquent\Builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder + * @return \Illuminate\Contracts\Database\Eloquent\Builder */ public function execute(Builder $builder); } diff --git a/src/Engines/Expression.php b/src/Engines/Expression.php index a9a9c18..202dd45 100644 --- a/src/Engines/Expression.php +++ b/src/Engines/Expression.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Support\Payload; use Kettasoft\Filterable\Engines\Foundation\Engine; use Kettasoft\Filterable\Support\ConditionNormalizer; @@ -22,7 +22,7 @@ class Expression extends Engine /** * Apply filters to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ public function execute(Builder $builder): Builder diff --git a/src/Engines/Foundation/Appliers/Applier.php b/src/Engines/Foundation/Appliers/Applier.php index 308e02a..429061f 100644 --- a/src/Engines/Foundation/Appliers/Applier.php +++ b/src/Engines/Foundation/Appliers/Applier.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines\Foundation\Appliers; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Contracts\Appliable; abstract class Applier diff --git a/src/Engines/Foundation/Clause.php b/src/Engines/Foundation/Clause.php index 153aa93..f7e1a5f 100644 --- a/src/Engines/Foundation/Clause.php +++ b/src/Engines/Foundation/Clause.php @@ -3,7 +3,7 @@ namespace Kettasoft\Filterable\Engines\Foundation; use Illuminate\Support\Collection; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Contracts\Support\Jsonable; use Illuminate\Contracts\Support\Arrayable; use Kettasoft\Filterable\Engines\Foundation\Parsers\Dissector; diff --git a/src/Engines/Foundation/ClauseApplier.php b/src/Engines/Foundation/ClauseApplier.php index 4c52677..9525114 100644 --- a/src/Engines/Foundation/ClauseApplier.php +++ b/src/Engines/Foundation/ClauseApplier.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines\Foundation; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Contracts\Appliable; class ClauseApplier implements Appliable @@ -15,8 +15,8 @@ public function __construct(protected Clause $clause) {} /** * Apply a Clause to the query builder. - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return \Illuminate\Database\Eloquent\Builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder + * @return \Illuminate\Contracts\Database\Eloquent\Builder */ public function apply(Builder $builder): Builder { @@ -33,7 +33,7 @@ public function apply(Builder $builder): Builder /** * Apply a direct (non-relational) clause to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ protected function applyDirect(Builder $builder) @@ -43,7 +43,7 @@ protected function applyDirect(Builder $builder) /** * Apply a relational clause to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ protected function applyRelational(Builder $builder) diff --git a/src/Engines/Foundation/Engine.php b/src/Engines/Foundation/Engine.php index 30d3781..7538005 100644 --- a/src/Engines/Foundation/Engine.php +++ b/src/Engines/Foundation/Engine.php @@ -4,7 +4,7 @@ use Illuminate\Support\Arr; use Kettasoft\Filterable\Filterable; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Foundation\Resources; use Kettasoft\Filterable\Engines\Contracts\Skippable; use Kettasoft\Filterable\Engines\Contracts\Executable; @@ -30,7 +30,7 @@ abstract public function getEngineName(): string; /** * Apply filters to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ abstract public function execute(Builder $builder); diff --git a/src/Engines/Foundation/Executors/Executer.php b/src/Engines/Foundation/Executors/Executer.php index 1d6f67c..627bbc4 100644 --- a/src/Engines/Foundation/Executors/Executer.php +++ b/src/Engines/Foundation/Executors/Executer.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines\Foundation\Executors; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Contracts\Executable; trait Executer @@ -10,8 +10,8 @@ trait Executer /** * Execute the given Executable instance with the provided query builder instance. * @param \Kettasoft\Filterable\Engines\Contracts\Executable $executable - * @param \Illuminate\Database\Eloquent\Builder $builder - * @return \Illuminate\Database\Eloquent\Builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder + * @return \Illuminate\Contracts\Database\Eloquent\Builder */ public static function execute(Executable $executable, Builder $builder) { diff --git a/src/Engines/Invokable.php b/src/Engines/Invokable.php index f1a2462..9fc3351 100644 --- a/src/Engines/Invokable.php +++ b/src/Engines/Invokable.php @@ -4,7 +4,7 @@ use Illuminate\Support\Str; use Kettasoft\Filterable\Filterable; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Support\Payload; use Illuminate\Support\Traits\ForwardsCalls; use Kettasoft\Filterable\Engines\Foundation\Engine; @@ -32,7 +32,7 @@ class Invokable extends Engine /** * Apply filters to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ public function execute(Builder $builder): Builder diff --git a/src/Engines/Ruleset.php b/src/Engines/Ruleset.php index 0a3322d..5c64fca 100644 --- a/src/Engines/Ruleset.php +++ b/src/Engines/Ruleset.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Support\Payload; use Kettasoft\Filterable\Traits\FieldNormalizer; use Kettasoft\Filterable\Engines\Foundation\Engine; @@ -23,7 +23,7 @@ class Ruleset extends Engine /** * Apply filters to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ public function execute(Builder $builder): Builder diff --git a/src/Engines/Tree.php b/src/Engines/Tree.php index 0419c44..d851da2 100644 --- a/src/Engines/Tree.php +++ b/src/Engines/Tree.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Engines; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Support\Payload; use Kettasoft\Filterable\Support\TreeNode; use Kettasoft\Filterable\Traits\FieldNormalizer; @@ -23,7 +23,7 @@ class Tree extends Engine /** * Apply filters to the query. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @return Builder */ public function execute(Builder $builder): Builder @@ -35,7 +35,7 @@ public function execute(Builder $builder): Builder /** * Apply tree node to the query builder. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @param \Kettasoft\Filterable\Support\TreeNode $node * @return Builder */ diff --git a/src/Facades/Filterable.php b/src/Facades/Filterable.php index 791a47b..d92d750 100644 --- a/src/Facades/Filterable.php +++ b/src/Facades/Filterable.php @@ -27,8 +27,8 @@ * Core Filtering Methods: * @method static \Kettasoft\Filterable\Foundation\Resources getResources() Get Resources instance. * @method static \Kettasoft\Filterable\Foundation\FilterableSettings settings() Get FilterableSettings instance. - * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Database\Eloquent\Builder apply(\Illuminate\Database\Eloquent\Builder|null $builder = null) Apply all filters. - * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Database\Eloquent\Builder filter(\Illuminate\Database\Eloquent\Builder|null $builder = null) Alias name for apply method. + * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Contracts\Database\Eloquent\Builder apply(\Illuminate\Contracts\Database\Eloquent\Builder|null $builder = null) Apply all filters. + * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Contracts\Database\Eloquent\Builder filter(\Illuminate\Contracts\Database\Eloquent\Builder|null $builder = null) Alias name for apply method. * @method static \Kettasoft\Filterable\Filterable sorting(callable|string|\Kettasoft\Filterable\Foundation\Contracts\Sorting\Invokable $sorting) Define sorting rules for the current filterable instance. * @method static \Kettasoft\Filterable\Filterable shouldReturnQueryBuilder() Should return Query Builder instance when invoke apply. * @@ -108,11 +108,11 @@ * @method static \Kettasoft\Filterable\Filterable setFieldsMap(mixed $fields, bool $override = true) Set fields wrapper. * * Builder Management: - * @method static \Illuminate\Database\Eloquent\Builder getBuilder() Get registered filter builder. - * @method static \Kettasoft\Filterable\Filterable setBuilder(\Illuminate\Database\Eloquent\Builder $builder) Set a new builder. + * @method static \Illuminate\Contracts\Database\Eloquent\Builder getBuilder() Get registered filter builder. + * @method static \Kettasoft\Filterable\Filterable setBuilder(\Illuminate\Contracts\Database\Eloquent\Builder $builder) Set a new builder. * * SQL Export: - * @method static string toSql(\Illuminate\Database\Eloquent\Builder|null $builder = null, mixed $withBindings = false) Get the SQL representation of the filtered query. + * @method static string toSql(\Illuminate\Contracts\Database\Eloquent\Builder|null $builder = null, mixed $withBindings = false) Get the SQL representation of the filtered query. * * @see \Kettasoft\Filterable\Filterable */ diff --git a/src/Filterable.php b/src/Filterable.php index a1654dc..6d12735 100644 --- a/src/Filterable.php +++ b/src/Filterable.php @@ -7,13 +7,13 @@ use Illuminate\Support\Facades\App; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Traits\Macroable; -use Illuminate\Database\Eloquent\Builder; use Kettasoft\Filterable\Foundation\Invoker; use Kettasoft\Filterable\Contracts\Commitable; use Kettasoft\Filterable\Foundation\Resources; use Kettasoft\Filterable\Contracts\Validatable; use Kettasoft\Filterable\Contracts\Authorizable; use Kettasoft\Filterable\Sanitization\Sanitizer; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Foundation\Clause; use Kettasoft\Filterable\Engines\Foundation\Engine; use Kettasoft\Filterable\Foundation\Sorting\Sorter; @@ -493,7 +493,7 @@ public function shouldReturnQueryBuilder() /** * Alias name for @apply method. - * @param \Illuminate\Database\Eloquent\Builder|null $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder|null $builder * @return Invoker|Builder */ public function filter(Builder|null $builder = null): Invoker|Builder @@ -514,7 +514,7 @@ public static function aliases(array $aliases) /** * Initialize query builder instance. - * @param \Illuminate\Database\Eloquent\Builder|null $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder|null $builder * @throws \Kettasoft\Filterable\Exceptions\MissingBuilderException */ private function initQueryBuilderInstance(Builder|null $builder = null) @@ -614,7 +614,7 @@ public function unless(bool $condition, callable $callback) /** * Allow the query to pass through a custom pipeline of pipes (callables). * - * @param array $pipes + * @param array $pipes * @return static * @link https://kettasoft.github.io/filterable/features/through */ @@ -933,7 +933,7 @@ public function autoSetAllowedFieldsFromModel(bool $override = false): static /** * Get the SQL representation of the filtered query. - * @param \Illuminate\Database\Eloquent\Builder|null $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder|null $builder * @param mixed $withBindings * @return string */ diff --git a/src/Foundation/Caching/CacheKeyGenerator.php b/src/Foundation/Caching/CacheKeyGenerator.php index f9bff3d..55fda07 100644 --- a/src/Foundation/Caching/CacheKeyGenerator.php +++ b/src/Foundation/Caching/CacheKeyGenerator.php @@ -2,7 +2,7 @@ namespace Kettasoft\Filterable\Foundation\Caching; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Support\Str; /** diff --git a/src/Foundation/Contracts/QueryBuilderInterface.php b/src/Foundation/Contracts/QueryBuilderInterface.php index f4c5c9a..bdcb2c1 100644 --- a/src/Foundation/Contracts/QueryBuilderInterface.php +++ b/src/Foundation/Contracts/QueryBuilderInterface.php @@ -6,6 +6,6 @@ use Illuminate\Contracts\Database\Query\Builder as QueryBuilder; /** - * @mixin \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder + * @mixin \Illuminate\Database\Query\Builder|\Illuminate\Contracts\Database\Eloquent\Builder */ interface QueryBuilderInterface extends EloquentBuilder, QueryBuilder {} diff --git a/src/Foundation/Contracts/Sortable.php b/src/Foundation/Contracts/Sortable.php index 1d85a27..1912871 100644 --- a/src/Foundation/Contracts/Sortable.php +++ b/src/Foundation/Contracts/Sortable.php @@ -2,14 +2,14 @@ namespace Kettasoft\Filterable\Foundation\Contracts; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; interface Sortable { /** * Apply sorting to the query. * - * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Contracts\Database\Eloquent\Builder $query * @return Builder */ public function apply(Builder $query): Builder; diff --git a/src/Foundation/Invoker.php b/src/Foundation/Invoker.php index 1d78ea5..04f8152 100644 --- a/src/Foundation/Invoker.php +++ b/src/Foundation/Invoker.php @@ -11,7 +11,7 @@ use function Opis\Closure\{serialize, unserialize}; use Illuminate\Database\Query\Builder as QueryBuilder; use Kettasoft\Filterable\Foundation\Profiler\Profiler; -use Illuminate\Database\Eloquent\Builder as EloquentBuilder; +use Illuminate\Contracts\Database\Eloquent\Builder as EloquentBuilder; use Kettasoft\Filterable\Foundation\Contracts\HasDynamicCalls; use Kettasoft\Filterable\Foundation\Traits\HandleFluentReturn; diff --git a/src/Foundation/Profiler/Profiler.php b/src/Foundation/Profiler/Profiler.php index dcb36c3..61ba79e 100644 --- a/src/Foundation/Profiler/Profiler.php +++ b/src/Foundation/Profiler/Profiler.php @@ -3,9 +3,9 @@ namespace Kettasoft\Filterable\Foundation\Profiler; use Illuminate\Support\Facades\DB; +use Illuminate\Foundation\Application; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Events\QueryExecuted; -use Illuminate\Foundation\Application; use Kettasoft\Filterable\Foundation\Profiler\Events\ProfilerEventDispatcher; use Kettasoft\Filterable\Foundation\Profiler\Contracts\ProfilerStorageContract; use Kettasoft\Filterable\Foundation\Profiler\Traits\HasProfilerEventDispatcher; diff --git a/src/Foundation/Sorting/Sorter.php b/src/Foundation/Sorting/Sorter.php index e3dd0b5..b4a6fd4 100644 --- a/src/Foundation/Sorting/Sorter.php +++ b/src/Foundation/Sorting/Sorter.php @@ -3,7 +3,7 @@ namespace Kettasoft\Filterable\Foundation\Sorting; use Illuminate\Http\Request; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Contracts\Appliable; use Kettasoft\Filterable\Foundation\Contracts\Sortable; @@ -254,7 +254,7 @@ public function setNullsPosition(string|null $position = null): self /** * Apply sorting to the query. * - * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Contracts\Database\Eloquent\Builder $query * @return Builder */ public function apply(Builder $query): Builder @@ -298,7 +298,7 @@ public function apply(Builder $query): Builder * Apply sorting aliases to the query. * * @param string $sortInput - * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Contracts\Database\Eloquent\Builder $query * @return void */ protected function applyAliases(array $fields, Builder $query): void @@ -316,7 +316,7 @@ protected function applyAliases(array $fields, Builder $query): void * Apply default sorting pattern to the query. * * @param array $pattern - * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Contracts\Database\Eloquent\Builder $query * @return void */ protected function applyDefault(array $pattern, Builder $query): void diff --git a/src/Providers/AutoRegisterFilterableServiceProvider.php b/src/Providers/AutoRegisterFilterableServiceProvider.php index 7b83a79..7abaeb1 100644 --- a/src/Providers/AutoRegisterFilterableServiceProvider.php +++ b/src/Providers/AutoRegisterFilterableServiceProvider.php @@ -4,8 +4,8 @@ use Illuminate\Support\ServiceProvider; use Illuminate\Database\Eloquent\Builder; -use Kettasoft\Filterable\Contracts\FilterableContext; use Kettasoft\Filterable\Support\FilterResolver; +use Kettasoft\Filterable\Contracts\FilterableContext; class AutoRegisterFilterableServiceProvider extends ServiceProvider { diff --git a/src/Support/FilterResolver.php b/src/Support/FilterResolver.php index 279a45c..2a99a31 100644 --- a/src/Support/FilterResolver.php +++ b/src/Support/FilterResolver.php @@ -4,7 +4,7 @@ use Illuminate\Support\Facades\App; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Illuminate\Support\Traits\ForwardsCalls; use Kettasoft\Filterable\Contracts\FilterableContext; use Kettasoft\Filterable\Exceptions\FilterIsNotDefinedException; @@ -29,7 +29,7 @@ class FilterResolver /** * Create FilterRegisterator instance. - * @param \Illuminate\Database\Eloquent\Builder $builder + * @param \Illuminate\Contracts\Database\Eloquent\Builder $builder * @param mixed $filter */ public function __construct(Builder $builder, $filter = null) diff --git a/src/Support/ValidateTableColumns.php b/src/Support/ValidateTableColumns.php index d5f8781..1137a0b 100644 --- a/src/Support/ValidateTableColumns.php +++ b/src/Support/ValidateTableColumns.php @@ -4,13 +4,13 @@ use Illuminate\Support\Facades\Schema; use Illuminate\Database\Eloquent\Model; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; class ValidateTableColumns { /** * Check if column name is exist in specific table. - * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Database\Eloquent\Builder $instance + * @param \Illuminate\Database\Eloquent\Model|\Illuminate\Contracts\Database\Eloquent\Builder $instance * @param string $column * @return bool */ diff --git a/src/Traits/HasFilterable.php b/src/Traits/HasFilterable.php index b2b05be..9266026 100644 --- a/src/Traits/HasFilterable.php +++ b/src/Traits/HasFilterable.php @@ -3,7 +3,7 @@ namespace Kettasoft\Filterable\Traits; use Kettasoft\Filterable\Filterable; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Support\FilterResolver; use Kettasoft\Filterable\Exceptions\FilterClassNotResolvedException; use Kettasoft\Filterable\Foundation\Contracts\QueryBuilderInterface; @@ -13,16 +13,16 @@ * * This is not a typical Laravel Global Scope. * - * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Database\Eloquent\Builder filter(\Kettasoft\Filterable\Filterable|string|null $filter = null) + * @method static \Kettasoft\Filterable\Foundation\Invoker|\Illuminate\Contracts\Database\Eloquent\Builder filter(\Kettasoft\Filterable\Filterable|string|null $filter = null) * @mixin \Illuminate\Database\Eloquent\Model */ trait HasFilterable { /** * Apply all relevant thread filters. - * @param \Illuminate\Database\Eloquent\Builder $query + * @param \Illuminate\Contracts\Database\Eloquent\Builder $query * @param \Kettasoft\Filterable\Filterable|string|null $filter - * @return \Illuminate\Database\Eloquent\Builder + * @return \Illuminate\Contracts\Database\Eloquent\Builder */ public function scopeFilter(Builder $query, Filterable|string|array|null $filter = null): QueryBuilderInterface { diff --git a/tests/Feature/Filterable/FilterableLifecycleHooksTest.php b/tests/Feature/Filterable/FilterableLifecycleHooksTest.php index 3e90c36..e128813 100644 --- a/tests/Feature/Filterable/FilterableLifecycleHooksTest.php +++ b/tests/Feature/Filterable/FilterableLifecycleHooksTest.php @@ -4,8 +4,8 @@ use Kettasoft\Filterable\Filterable; use Kettasoft\Filterable\Tests\TestCase; -use Illuminate\Database\Eloquent\Builder; use Kettasoft\Filterable\Tests\Models\Post; +use Illuminate\Contracts\Database\Eloquent\Builder; class FilterableLifecycleHooksTest extends TestCase { diff --git a/tests/Unit/Engines/EngineManagerTest.php b/tests/Unit/Engines/EngineManagerTest.php index 9741b70..8dbd104 100644 --- a/tests/Unit/Engines/EngineManagerTest.php +++ b/tests/Unit/Engines/EngineManagerTest.php @@ -5,7 +5,7 @@ use Kettasoft\Filterable\Filterable; use Kettasoft\Filterable\Engines\Tree; use Kettasoft\Filterable\Tests\TestCase; -use Illuminate\Database\Eloquent\Builder; +use Illuminate\Contracts\Database\Eloquent\Builder; use Kettasoft\Filterable\Engines\Ruleset; use Kettasoft\Filterable\Engines\Expression; use Kettasoft\Filterable\Engines\Invokable; diff --git a/tests/Unit/FilterableHasRelationsTest.php b/tests/Unit/FilterableHasRelationsTest.php new file mode 100644 index 0000000..a1959bb --- /dev/null +++ b/tests/Unit/FilterableHasRelationsTest.php @@ -0,0 +1,39 @@ +create(); + Tag::factory(5)->create(['post_id' => 1]); + Tag::factory(5)->create(['post_id' => 1, 'name' => 'archived']); + } + public function test_it_can_filter_using_has_relation() + { + // HasMany relation + $query = Post::find(1)->tags(); + + $result = Filterable::tap(function (Filterable $filterable) use ($query) { + $filterable->setBuilder($query); + $filterable->setData([ + 'name' => 'archived', + ]); + + $filterable->useEngine('ruleset'); + + $filterable->setAllowedFields([ + 'name' + ]); + })->apply(); + + $this->assertEquals(5, $result->count()); + } +}