Symfony uniqueEntity字段 - 即使设置了字段也会保存

时间:2015-03-19 10:44:46

标签: validation unique-constraint symfony-2.6

我正在尝试实现uniqueEntity功能,以避免在DB中保存两次或更多但似乎无法正常工作。

我红了这个:http://symfony.com/doc/current/reference/constraints/UniqueEntity.html

这是我的代码:

我做错了吗?

...

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
 * Artist
 *
 * @ORM\Table(name="artists")
 * @ORM\Entity
 * @UniqueEntity(fields = {"firstName", "lastName", "birthDate", "deathDate"})
 */
class Artist
{
    /**
     * @var integer
     *
     * @ORM\Column(name="ArtistID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="ArtistFirstName", type="string", length=100, nullable=true)
     * 
     */
    private $firstName;

    /**
     * @var string
     *
     * @ORM\Column(name="ArtistLastName", type="string", length=100)
     * @Assert\NotBlank()
     */
    private $lastName;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="ArtistBirthDate", type="datetime", nullable=true)
     */
    private $birthDate;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="ArtistDeathDate", type="datetime", nullable=true)
     */
    private $deathDate;

...

任何帮助都会很棒。谢谢。

1 个答案:

答案 0 :(得分:0)

经过大量的测试,它确实有效!

我的所作所为:

  • 空现金
  • 删除{} =>之前的字段@UniqueEntity({“firstName”,“lastName”,“birthDate”,“deathDate”},)
  • 删除所有属性的unique = true,因为我想要多个 字段而不仅仅是一个
  • 然后我再次把“字段......”放进去了 原理

现在我发现最终用户的错误并不明确。

错误始终以第一个字段为目标。好吧,这似乎是合乎逻辑的,但还有其他解决方案来显示错误吗?也许最重要的是,但所有错误都会显示在那里,我更喜欢看到关联领域前面的错误。

谢谢大家。