条令增加了对PHP8.1枚举类型的本地支持。它看起来像预期的那样在实体端工作(将实体保存在DB上并水合,而获取实体则按预期工作(。但是,当我尝试使用枚举字段上带有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)
来省略这个问题,但这有点奇怪。
是我做错了什么,还是只是想这样?
此功能尚未在正式发布中提供。有一个合并的PR将把它添加到ORMv.1.12.1
中。
https://github.com/doctrine/orm/pull/9453/commits/9ebd07a36645236f01624754f7c71e0ff84c30b1#
https://github.com/doctrine/orm/issues/9372