Skip to content

Query result type is not recognized if the alias is "attribute" #566

Closed
@julienfalque

Description

@julienfalque

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions