Skip to content

Commit c7a64f8

Browse files
committed
mapper type extension: fix resolving parent class
1 parent dc15377 commit c7a64f8

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

src/Types/MapperMethodReturnTypeExtension.php

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,20 @@ public function getTypeFromMethodCall(
7070
return $defaultReturn;
7171
}
7272

73-
$mapperClass = $mapper->getClassName();
73+
$currentMapper = $this->reflectionProvider->getClass($mapper->getClassName());
74+
assert($currentMapper !== false);
75+
7476
do {
77+
$mapperClass = $currentMapper->getName();
7578
/** @phpstan-var class-string<\Nextras\Orm\Repository\Repository> $repositoryClass */
7679
$repositoryClass = \str_replace('Mapper', 'Repository', $mapperClass);
77-
$mapperClass = \get_parent_class($mapperClass);
80+
81+
$currentMapper = $this->reflectionProvider->getClass($mapperClass)->getParentClass();
82+
if ($currentMapper === false) {
83+
break;
84+
}
85+
$mapperClass = $currentMapper->getName();
86+
7887
assert(is_string($mapperClass));
7988
} while (!\class_exists($repositoryClass) && $mapperClass !== DbalMapper::class);
8089

tests/testbox/Types/fixtures/AuthorsMapper.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,16 @@
22

33
namespace NextrasTests\OrmPhpStan\Types;
44

5+
use Nextras\Orm\Collection\ICollection;
56
use Nextras\Orm\Mapper\Mapper;
67

78

89
class AuthorsMapper extends Mapper
910
{
11+
public function findAllWithTranslatedIps(): ICollection
12+
{
13+
return $this->toCollection(
14+
$this->builder()->addSelect('inet6_ntoa([ip]) as [ip]')
15+
);
16+
}
1017
}

0 commit comments

Comments
 (0)