Doctrine 添加了对 PHP8.1 枚举类型的原生支持。它看起来像预期的那样在实体方面工作(在数据库上保存实体和水合,同时获取实体按预期工作)。但是,当我尝试使用带有 where 枚举字段上的 where 子句的存储库查询构建器来获取实体时,由于转换问题,它会引发异常。
例如
$em->getRepository(SomeEntity::class)
->createQueryBuilder('s')
->where('s.enumStatus = :status')
->setParameter('status', EnumStatus::Pending)
->getQuery()
->getResult();
将导致
Object of class EnumStatus could not be converted to string
in vendor/doctrine/dbal/src/Driver/PDO/Statement.php (line 50)
当然,我可以通过这样做来省略问题,->setParameter('status', EnumStatus::Pending->value)
但这有点奇怪。
Em我做错了什么,或者它只是意味着这样?