【发布时间】:2026-01-07 21:10:01
【问题描述】:
我有一个实体,我想根据数据库查询验证其中一个属性。我将它定义为我的存储库中的一个方法,例如:
class EntryRepository extends EntityRepository {
/**
* Gets valid entries for validation
*/
public function getValidEntries() {
return $this->createQueryBuilder('s')
->where('s.isAvailable = :isAvailable')
->setParameter('isAvailable', true)
->getQuery()
->getResult();
}
...
}
如何使用它为选择约束提供可用的选择?我可以像这样在我的实体类中定义它:
use Symfony\Component\Validator\Constraints as Assert;
class SomeEntity {
/**
* @Assert\Choice(callback = {"Acme\MyBundle\Entity\EntryRepository", "getValidEntries"})
* ...
*/
private $entry;
...
}
但是,这需要我在存储库中将此方法设为静态,这不是定义存储库方法的好方法。
有没有办法正确地做到这一点?或者也许我正在尝试重新发明*并且有更好的方法来做我想做的事情?
【问题讨论】:
-
我认为您最好的选择是创建自己的约束并将存储库作为依赖项注入。 symfony.com/doc/current/cookbook/validation/…
标签: php validation symfony doctrine-orm