2015-03-19 1 views
0

Я пытаюсь реализовать уникальную функцию Entity, чтобы избежать сохранения дважды и более в БД, но кажется, что она не работает.Symfony uniqueEntity fields - сохранить, даже если поля установлены

я красный это: 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; 

... 

Любая помощь будет замечательной. Спасибо.

+0

Всякий раз, когда я сталкиваюсь с такими проблемами, это почти всегда, потому что более старая версия моих объектов кэшируется в APC/U. Что произойдет, если вы очистите кеш APC? (Перезапуск Apache сделает это.) – nurikabe

ответ

0

После многих испытаний оно работает!

Что я пробовал:

  • пустой наличные
  • удалить поля до {} => @ UniqueEntity ({ "FirstName", "LastName", "BirthDate", "deathDate"},)
  • удалить уникальный = истина для всех моих свойств, потому что я хочу несколько полей, а не только один
  • тогда я поставил «поля ...» снова и работает

Теперь я нахожу, что ошибка не понятна для конечного пользователя.

Ошибка всегда нацелена на первое поле. Хорошо, это кажется логичным, но есть ли другое решение, чтобы показать ошибку? Возможно, сверху, но так, там будут показаны все ошибки, и я предпочитаю видеть ошибки перед ассоциированным полем.

Спасибо всем.