-
Notifications
You must be signed in to change notification settings - Fork 24
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.
flaviovs, EtienneBruines and particleflux
Metadata
Metadata
Assignees
Labels
No labels