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.
Activity
$this->createQueryBuilder()->getQuery()->getResult()
when alias isev
orevent
#608ondrejmirtes commentedon Sep 12, 2024
We found the culprit. Please subscribe to #608.
github-actions commentedon Oct 14, 2024
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.