Open
Description
Code in the controller:
/**
* @var Transfer|null $transfer
*/
$transfer = Transfer::find()->one();
if (!$transfer) {
return;
}
$paymentsTransfers = $transfer->getPaymentTransfer()->all();
Model:
class Transfer extends \yii\db\ActiveRecord
{
/**
* @return \yii\db\ActiveQuery
*/
public function getPaymentTransfer()
{
return $this->hasMany(PaymentTransfer::class, ['transfer_id' => 'id']);
}
}
getPaymentTransfer()
method return type provided in PhpDoc or using native return type set to ActiveQuery
leads to extension exception: Internal error: Unexpected type PHPStan\Type\ObjectType during method call all at line 142
(line 142 is $transfer->getPaymentTransfer()->all()
call). That error comes from \Proget\PHPStan\Yii2\Type\ActiveQueryDynamicMethodReturnTypeExtension::getTypeFromMethodCall
. Here is what's in the $calledOnType
:
object(PHPStan\Type\ObjectType)#9382 (3) {
["className":"PHPStan\Type\ObjectType":private]=>
string(18) "yii\db\ActiveQuery"
["subtractedType":"PHPStan\Type\ObjectType":private]=>
NULL
["genericObjectType":"PHPStan\Type\ObjectType":private]=>
NULL
}
If I remove return type from getPaymentTransfer()
everything works fine. But that looks odd and that's easy to break if someone adds return type.
Metadata
Metadata
Assignees
Labels
No labels