0

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我做错了什么,或者它只是意味着这样?

4

0 回答 0