[英]Does Doctrine repository's findBy method support Enums?
在使用 Doctrine 2.7.0 的 Symfony 6.0.8 项目中,我添加了一些枚举作为我的实体的字段类型(我遵循了本教程: https ://smaine-milianni.medium.com/use-php-enums-as -doctrine-type-in-symfony-85909aa0a19a ),一切正常。
让我烦恼的是,在我的存储库中,我可以使用这些字段过滤
$qb = $this->createQueryBuilder('e');
$query = $qb->select("e")
->where('e.status = :status')
->setParameter('status', Status::STATUS_ACCEPTED)
;
return $query->getQuery()->getResult();
但不是这个
$criterias = array(
"status" => Status::STATUS_ACCEPTED,
);
$repository->findBy($criterias);
添加->value
也无济于事。 一旦我尝试使用枚举进行过滤,它就会返回一个空集。
有什么我想念的吗?
由于此代码, setParameter
起作用:
// \Doctrine\ORM\AbstractQuery::processParameterValue
if ($value instanceof BackedEnum) {
return $value->value;
}
我不能确定为什么标准不能以这种方式工作,但我认为这是因为\Doctrine\ORM\Persisters\Entity\BasicEntityPersister::expandParameters
( 这里)。 但奇怪的是,如果你尝试传递->value
那将是 int|string,它应该可以正常工作。 请检查->value
返回一个字符串,该字符串包含在数据库列中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.