Skip to content

Add trait-free model filter attributes - #55

Merged
Thavarshan merged 1 commit into
mainfrom
feature/model-filter-attribute
Oct 29, 2026
Merged

Thavarshan merged 1 commit into
mainfrom
feature/model-filter-attribute

Conversation

@Thavarshan

Copy link
Copy Markdown
Owner

Models can now declare #[UseFilter(PostFilter::class)] and call Post::filter() without a model trait. The Eloquent macro resolves the declared filter from the current container on each call, applies it without executing the query, and preserves scope grouping and the existing builder.

Existing named filter scopes take precedence, preserving their arguments and return values. Child models inherit the nearest declaration and can override it. Invalid declarations fail clearly, and the provider preserves any previously registered global filter macro.

The README quick start now uses the attribute and automatic request resolution. A dedicated section covers query chaining, named options, explicit filter overrides, inheritance, migration, caching semantics, macro conflicts, and IDE annotations. The existing executable README test exercises the new quick start.

Validation:

  • composer test: 235 tests, 734 assertions, 5 expected local skips for version/service-dependent cases.
  • composer lint: passed.
  • composer analyse: no errors at maximum level, no baseline.
  • Focused regression tests cover current request resolution, fresh instances, options, overrides, inheritance, legacy/native/custom scopes, external macros, query execution/pagination, invalid models, and OR grouping.

PHP 8.3+ and Laravel 11-13 remain supported. Existing model traits remain available.

@Thavarshan
Thavarshan merged commit a6e4ff6 into main Oct 29, 2026
29 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant