Skip to content

Commit ce2ba2f

Browse files
authored
Add template types to relation classes (#3262)
1 parent af50a44 commit ce2ba2f

11 files changed

+85
-1
lines changed

Diff for: phpstan-baseline.neon

+30
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,41 @@ parameters:
1010
count: 4
1111
path: src/MongoDBServiceProvider.php
1212

13+
-
14+
message: "#^Call to an undefined method TDeclaringModel of Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:pull\\(\\)\\.$#"
15+
count: 1
16+
path: src/Relations/BelongsToMany.php
17+
1318
-
1419
message: "#^Method Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:push\\(\\) invoked with 3 parameters, 0 required\\.$#"
1520
count: 3
1621
path: src/Relations/BelongsToMany.php
1722

23+
-
24+
message: "#^Call to an undefined method MongoDB\\\\Laravel\\\\Relations\\\\EmbedsMany\\<TRelatedModel of Illuminate\\\\Database\\\\Eloquent\\\\Model, TDeclaringModel of Illuminate\\\\Database\\\\Eloquent\\\\Model, TResult\\>\\:\\:contains\\(\\)\\.$#"
25+
count: 1
26+
path: src/Relations/EmbedsMany.php
27+
28+
-
29+
message: "#^Call to an undefined method TDeclaringModel of Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:getParentRelation\\(\\)\\.$#"
30+
count: 1
31+
path: src/Relations/EmbedsOneOrMany.php
32+
33+
-
34+
message: "#^Call to an undefined method TDeclaringModel of Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:setParentRelation\\(\\)\\.$#"
35+
count: 1
36+
path: src/Relations/EmbedsOneOrMany.php
37+
38+
-
39+
message: "#^Call to an undefined method TRelatedModel of Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:setParentRelation\\(\\)\\.$#"
40+
count: 2
41+
path: src/Relations/EmbedsOneOrMany.php
42+
43+
-
44+
message: "#^Call to an undefined method TDeclaringModel of Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:pull\\(\\)\\.$#"
45+
count: 2
46+
path: src/Relations/MorphToMany.php
47+
1848
-
1949
message: "#^Method Illuminate\\\\Database\\\\Eloquent\\\\Model\\:\\:push\\(\\) invoked with 3 parameters, 0 required\\.$#"
2050
count: 6

Diff for: src/Relations/BelongsTo.php

+7-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,14 @@
66

77
use Illuminate\Database\Eloquent\Builder;
88
use Illuminate\Database\Eloquent\Model;
9+
use Illuminate\Database\Eloquent\Relations\BelongsTo as EloquentBelongsTo;
910

10-
class BelongsTo extends \Illuminate\Database\Eloquent\Relations\BelongsTo
11+
/**
12+
* @template TRelatedModel of Model
13+
* @template TDeclaringModel of Model
14+
* @extends EloquentBelongsTo<TRelatedModel, TDeclaringModel>
15+
*/
16+
class BelongsTo extends EloquentBelongsTo
1117
{
1218
/**
1319
* Get the key for comparing against the parent key in "has" query.

Diff for: src/Relations/BelongsToMany.php

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
use function in_array;
2222
use function is_numeric;
2323

24+
/**
25+
* @template TRelatedModel of Model
26+
* @template TDeclaringModel of Model
27+
* @extends EloquentBelongsToMany<TRelatedModel, TDeclaringModel>
28+
*/
2429
class BelongsToMany extends EloquentBelongsToMany
2530
{
2631
/**

Diff for: src/Relations/EmbedsMany.php

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
use function throw_if;
2222
use function value;
2323

24+
/**
25+
* @template TRelatedModel of Model
26+
* @template TDeclaringModel of Model
27+
* @template TResult
28+
* @extends EmbedsOneOrMany<TRelatedModel, TDeclaringModel, TResult>
29+
*/
2430
class EmbedsMany extends EmbedsOneOrMany
2531
{
2632
/** @inheritdoc */

Diff for: src/Relations/EmbedsOne.php

+6
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111

1212
use function throw_if;
1313

14+
/**
15+
* @template TRelatedModel of Model
16+
* @template TDeclaringModel of Model
17+
* @template TResult
18+
* @extends EmbedsOneOrMany<TRelatedModel, TDeclaringModel, TResult>
19+
*/
1420
class EmbedsOne extends EmbedsOneOrMany
1521
{
1622
public function initRelation(array $models, $relation)

Diff for: src/Relations/EmbedsOneOrMany.php

+6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@
2121
use function str_starts_with;
2222
use function throw_if;
2323

24+
/**
25+
* @template TRelatedModel of Model
26+
* @template TDeclaringModel of Model
27+
* @template TResult
28+
* @extends Relation<TRelatedModel, TDeclaringModel, TResult>
29+
*/
2430
abstract class EmbedsOneOrMany extends Relation
2531
{
2632
/**

Diff for: src/Relations/HasMany.php

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
use Illuminate\Database\Eloquent\Model;
99
use Illuminate\Database\Eloquent\Relations\HasMany as EloquentHasMany;
1010

11+
/**
12+
* @template TRelatedModel of Model
13+
* @template TDeclaringModel of Model
14+
* @extends EloquentHasMany<TRelatedModel, TDeclaringModel>
15+
*/
1116
class HasMany extends EloquentHasMany
1217
{
1318
/**

Diff for: src/Relations/HasOne.php

+5
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
use Illuminate\Database\Eloquent\Model;
99
use Illuminate\Database\Eloquent\Relations\HasOne as EloquentHasOne;
1010

11+
/**
12+
* @template TRelatedModel of Model
13+
* @template TDeclaringModel of Model
14+
* @extends EloquentHasOne<TRelatedModel, TDeclaringModel>
15+
*/
1116
class HasOne extends EloquentHasOne
1217
{
1318
/**

Diff for: src/Relations/MorphMany.php

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
use Illuminate\Database\Eloquent\Model;
88
use Illuminate\Database\Eloquent\Relations\MorphMany as EloquentMorphMany;
99

10+
/**
11+
* @template TRelatedModel of Model
12+
* @template TDeclaringModel of Model
13+
* @extends EloquentMorphMany<TRelatedModel, TDeclaringModel>
14+
*/
1015
class MorphMany extends EloquentMorphMany
1116
{
1217
/**

Diff for: src/Relations/MorphTo.php

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
use Illuminate\Database\Eloquent\Model;
88
use Illuminate\Database\Eloquent\Relations\MorphTo as EloquentMorphTo;
99

10+
/**
11+
* @template TRelatedModel of Model
12+
* @template TDeclaringModel of Model
13+
* @extends EloquentMorphTo<TRelatedModel, TDeclaringModel>
14+
*/
1015
class MorphTo extends EloquentMorphTo
1116
{
1217
/** @inheritdoc */

Diff for: src/Relations/MorphToMany.php

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@
2424
use function is_array;
2525
use function is_numeric;
2626

27+
/**
28+
* @template TRelatedModel of Model
29+
* @template TDeclaringModel of Model
30+
* @extends EloquentMorphToMany<TRelatedModel, TDeclaringModel>
31+
*/
2732
class MorphToMany extends EloquentMorphToMany
2833
{
2934
/** @inheritdoc */

0 commit comments

Comments
 (0)