src/AppBundle/Entity/Etiqueta.php line 26

  1. <?php
  2. namespace AppBundle\Entity;
  3. use Doctrine\Common\Collections\ArrayCollection;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\String\Slugger\AsciiSlugger;
  6. use Symfony\Component\Validator\Constraints as Assert;
  7. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  8. /**
  9.  * Etiqueta
  10.  *
  11.  * @ORM\Table(name="etiqueta")
  12.  * @ORM\Entity(repositoryClass="AppBundle\Repository\EtiquetaRepository")
  13.  * @ORM\HasLifecycleCallbacks()
  14.  */
  15. #[UniqueEntity(
  16.     fields: ['slugEs'],
  17.     message'El nombre de la etiqueta ya existe',
  18. )]
  19. #[UniqueEntity(
  20.     fields: ['alias'],
  21.     message'El alias ingresado ya existe',
  22. )]
  23. class Etiqueta
  24. {
  25.     /**
  26.      * @var int
  27.      *
  28.      * @ORM\Column(name="id", type="integer")
  29.      * @ORM\Id
  30.      * @ORM\GeneratedValue(strategy="AUTO")
  31.      */
  32.     private $id;
  33.     /**
  34.      * @var string
  35.      *
  36.      * @ORM\Column(name="nombre", type="string")
  37.      * @Assert\NotBlank(message="El campo nombre es obligatorio")
  38.      */
  39.     private $nombre;
  40.     /**
  41.      * @var string
  42.      *
  43.      * @ORM\Column(name="slug_es", type="string", unique="true")
  44.      */
  45.     private $slugEs;
  46.     /**
  47.      * @ORM\ManyToOne(targetEntity="Area", inversedBy="etiquetas")
  48.      * @ORM\JoinColumn(name="area_id", referencedColumnName="id")
  49.      * @Assert\NotBlank(message="Debe seleccionar una área")
  50.      */
  51.     protected $area;
  52.     /**
  53.      * @ORM\ManyToMany(targetEntity="Producto", inversedBy="etiquetas")
  54.      * @ORM\JoinTable(name="etiqueta_producto",
  55.      * joinColumns={@ORM\JoinColumn(name="etiqueta_id", referencedColumnName="id")},
  56.      * inverseJoinColumns={@ORM\JoinColumn(name="producto_id", referencedColumnName="id")}
  57.      * )
  58.      */
  59.     protected $productos;
  60.     /**
  61.      * @var string
  62.      *
  63.      * @ORM\Column(name="alias", type="string", unique="true")
  64.      * @Assert\Sequentially({ 
  65.      *      @Assert\NotBlank(message="El campo alias es obligatorio")
  66.      * })
  67.      */
  68.     private $alias;
  69.     public function __construct() {
  70.         $this->productos = new ArrayCollection();
  71.     }
  72.     /**
  73.      * Get ID
  74.      *
  75.      * @return int
  76.      */
  77.     public function getId()
  78.     {
  79.         return $this->id;
  80.     }
  81.     /**
  82.      * Set nombre
  83.      *
  84.      * @return Area
  85.      */
  86.     public function setNombre($nombre)
  87.     {
  88.         $this->nombre $nombre;
  89.         if(!empty($nombre)) {
  90.             $this->setSlug();
  91.         }
  92.         return $this;
  93.     }
  94.     /**
  95.      * Get nombre
  96.      *
  97.      * @return string
  98.      */
  99.     public function getNombre()
  100.     {
  101.         return $this->nombre;
  102.     }
  103.     /**
  104.      * Set slugEs
  105.      *
  106.      * @ORM\PreUpdate
  107.      * @ORM\PrePersist
  108.      * 
  109.      * @return Area
  110.      */
  111.     public function setSlug()
  112.     {
  113.         $slugify = new AsciiSlugger();
  114.         $this->slugEs $slugify->slug($this->nombre)->lower();
  115.         return $this;
  116.     }
  117.     /**
  118.      * Get slugEs
  119.      *
  120.      * @return string
  121.      */
  122.     public function getSlugEs()
  123.     {
  124.         return $this->slugEs;
  125.     }
  126.     /**
  127.      * Set Area
  128.      *
  129.      * @param Area $area
  130.      * 
  131.      * @return Etiqueta
  132.      */
  133.     public function setArea(Area $area null)
  134.     {
  135.         $this->area $area;
  136.         return $this;
  137.     }
  138.     /**
  139.      * Get Area
  140.      *
  141.      * @return Area
  142.      */
  143.     public function getArea()
  144.     {
  145.         return $this->area;
  146.     }
  147.     /**
  148.      * GET Productos
  149.      * 
  150.      * @return \Doctrine\Common\Collections\Collection
  151.      */
  152.     public function getProductos() {
  153.         return $this->productos;
  154.     }
  155.     public function addProducto(Producto $producto): self
  156.     {
  157.         if (!$this->productos->contains($producto)) {
  158.             $this->productos[] = $producto;
  159.         }
  160.         return $this;
  161.     }
  162.     public function removeProducto(Producto $producto): self
  163.     {
  164.         if ($this->productos->contains($producto)) {
  165.             $this->productos->removeElement($producto);
  166.         }
  167.         return $this;
  168.     }
  169.     public function getAlias() {
  170.         return $this->alias;
  171.     }
  172.     /**
  173.      * Set alias
  174.      * 
  175.      * @return Area
  176.      */
  177.     public function setAlias($alias)
  178.     {
  179.         $this->alias $alias;
  180.         return $this;
  181.     }
  182. }