happyr/entity-exists-validation-constraint

验证您的实体是否存在

1.2.0 2024-04-19 06:57 UTC

This package is auto-updated.

Last update: 2024-09-19 07:46:38 UTC


README

Latest Version Software License Build Status Code Coverage Quality Score Total Downloads

一个小型验证器,用于验证实体确实存在。如果您使用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 结合使用。