File tree Expand file tree Collapse file tree 3 files changed +28
-3
lines changed Expand file tree Collapse file tree 3 files changed +28
-3
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ parameters:
88 - src/
99 - config/
1010 - database/
11+ - types/
1112
1213 # Level 9 is the highest level
1314 level: 5
Original file line number Diff line number Diff line change @@ -51,8 +51,10 @@ public function getSubject(): Relation|EloquentBuilder
5151 }
5252
5353 /**
54- * @param EloquentBuilder<TModel>|Relation|class-string<TModel> $subject
55- * @return static<TModel>
54+ * @template T of Model
55+ *
56+ * @param EloquentBuilder<T>|Relation<T, *, *>|class-string<T> $subject
57+ * @return static<T>
5658 */
5759 public static function for (
5860 EloquentBuilder |Relation |string $ subject ,
@@ -62,7 +64,7 @@ public static function for(
6264 $ subject = $ subject ::query ();
6365 }
6466
65- /** @var static<TModel > $queryBuilder */
67+ /** @var static<T > $queryBuilder */
6668 $ queryBuilder = new static ($ subject , $ request );
6769
6870 return $ queryBuilder ;
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ use Illuminate \Database \Eloquent \Model ;
4+ use Illuminate \Database \Eloquent \Relations \BelongsTo ;
5+ use Spatie \QueryBuilder \QueryBuilder ;
6+ use function PHPStan \Testing \assertType ;
7+
8+ class Book extends Model {
9+ /**
10+ * @return BelongsTo<Author, $this>
11+ */
12+ public function author (): BelongsTo
13+ {
14+ return $ this ->belongsTo (Author::class);
15+ }
16+ }
17+
18+ class Author extends Model {}
19+
20+ assertType ('Spatie\QueryBuilder\QueryBuilder<Book> ' , QueryBuilder::for (Book::class));
21+ assertType ('Spatie\QueryBuilder\QueryBuilder<Book> ' , QueryBuilder::for (Book::query ()));
22+ assertType ('Spatie\QueryBuilder\QueryBuilder<Author> ' , QueryBuilder::for ((new Book )->author ()));
You can’t perform that action at this time.
0 commit comments