happyr / entity-exists-validation-constraint
验证您的实体是否存在
1.2.0
2024-04-19 06:57 UTC
Requires
- php: ^8.1
- doctrine/orm: ^2.4
- symfony/validator: ^6.0 || ^7.0
Requires (Dev)
- symfony/phpunit-bridge: ^6.0
- symfony/validator: ^6.4 || ^7.0
README
一个小型验证器,用于验证实体确实存在。如果您使用Symfony Messenger组件,这特别有用。现在您可以安全地验证消息并将其放入队列以便稍后处理。
namespace App\Message\Command; use Happyr\Validator\Constraint\EntityExist; use Symfony\Component\Validator\Constraints as Assert; final class EmailUser { /** * @Assert\NotBlank * @EntityExist(entity="App\Entity\User") * * @var int User's id property */ private $user; /** * @Assert\NotBlank * @EntityExist(entity="App\Entity\Other", property="name") * * @var string The name of "Other". We use its "name" property. */ private $other; // ...
如果您在使用其他约束来验证属性(例如在实体在数据库中检查之前)之前,应使用 组序列,以避免来自Doctrine映射的500错误。
namespace App\Message\Command; use Happyr\Validator\Constraint\EntityExist; use Symfony\Component\Validator\Constraints as Assert; /** * @Assert\GroupSequence({"EmailUser", "DatabaseCall"}) */ final class EmailUser { /** * @Assert\NotBlank * @Assert\Uuid * @EntityExist(entity="App\Entity\User", groups={"DatabaseCall"}, property="uuid") * * @var string Uuid */ private $user; // ...
安装
composer require happyr/entity-exists-validation-constraint
然后使用以下方式注册服务:
# config/packages/happyr_entity_exists_validator.yaml services: Happyr\Validator\Constraint\EntityExistValidator: arguments: ['@doctrine.orm.entity_manager'] tags: [ 'validator.constraint_validator' ]
注意
当值不为空时,验证器不会产生违规。这意味着您很可能需要将其与 NotBlank
结合使用。