Ver Mensaje Individual
  #6 (permalink)  
Antiguo 28/01/2015, 13:38
norbbs
 
Fecha de Ingreso: marzo-2013
Mensajes: 31
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Personalizar validaciones con doctrine

La cosa es que no pueden existir 2 o mas descripciones IGUALES bajo el mismo código y el codigo debe ser único
Por ejemplo:
001 Inglés (Válido)
002 Biología (Válido)
003 Inglés (Válido)

001 Química (Inválido)
014 Química (Válido)


Lo que no tengo claro es desde donde debo llamar a ese método ó si debe estar en otro sitio, es algo que no lo entiendo aún---

Código:
namespace TCG\DGeneralBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * Ddescasignatura
 * 
 * @ORM\Table(name="ddescasignatura")
 * @ORM\Entity(repositoryClass="DdescasignaturaRepository")
 */
class Ddescasignatura
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     * @ORM\SequenceGenerator(sequenceName="ddescasignatura_id_seq", allocationSize=1, initialValue=1)
     */
    private $id;
    
    /**
     * @var string
     *
     * @ORM\Column(name="codigo", type="string", length=10, nullable=true)
     */
    private $codigo;

    /**
     * @var string
     *
     * @ORM\Column(name="descripcion", type="string", length=60, nullable=false)
     */
    private $descripcion;

    /**
     * @var \Idioma
     *
     * @ORM\ManyToOne(targetEntity="Idioma")
     * @ORM\JoinColumn(name="idioma_id", referencedColumnName="id")
     */
    private $idioma;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set codigo
     *
     * @param string $codigo
     * @return Ddescasignatura
     */
    public function setCodigo($codigo)
    {
        $this->codigo = $codigo;

        return $this;
    }

    /**
     * Get codigo
     *
     * @return string 
     */
    public function getCodigo()
    {
        return $this->codigo;
    }

    /**
     * Set descripcion
     *
     * @param string $descripcion
     * @return Ddescasignatura
     */
    public function setDescripcion($descripcion)
    {
        $this->descripcion = $descripcion;

        return $this;
    }

    /**
     * Get descripcion
     *
     * @return string 
     */
    public function getDescripcion()
    {
        return $this->descripcion;
    }

    /**
     * Set idioma
     *
     * @param \TCG\DGeneralBundle\Entity\Idioma $idioma
     * @return Ddescasignatura
     */
    public function setIdioma(\TCG\DGeneralBundle\Entity\Idioma $idioma = null)
    {
        $this->idioma = $idioma;

        return $this;
    }

    /**
     * Get idioma
     *
     * @return \TCG\DGeneralBundle\Entity\Idioma 
     */
    public function getIdioma()
    {
        return $this->idioma;
    }
    
    public static function loadValidatorMetadata(ClassMetadata $metadata)
    {
        $metadata->addConstraint(new UniqueEntity(array(
            'fields'    => array('codigo', 'descripcion'),
            'errorPath' => 'descripcion',
            'message'   => 'Ya ha ingresado una descripción con el mismo código.',
        )));
    }
}

Última edición por norbbs; 28/01/2015 a las 14:39