Closed
Description
When using the query builder, if the queried entity has alias "attribute"
, the type of the query result is considered mixed
instead of list<Entity>
. For example, with the following code:
namespace App\Repository;
use App\Entity\Attribute;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @extends ServiceEntityRepository<Attribute>
*/
class AttributeRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Attribute::class);
}
/**
* @return list<Attribute>
*/
public function all(): array
{
return $this->createQueryBuilder('attribute')
->getQuery()
->getResult();
}
}
PHPStan will report:
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
Line src/App/Repository/AttributeRepository.php
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
20 Method App\Repository\AttributeRepository::all() should return list<App\Entity\Attribute> but returns mixed.
💡 mixed is not a list.
------ --------------------------------------------------------------------------------------------------------------------------------------------------------------------
Changing the alias to any other value fixes the error.
Metadata
Metadata
Assignees
Labels
No labels