src/AppBundle/Entity/Etiqueta.php line 26
<?php
namespace AppBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\String\Slugger\AsciiSlugger;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* Etiqueta
*
* @ORM\Table(name="etiqueta")
* @ORM\Entity(repositoryClass="AppBundle\Repository\EtiquetaRepository")
* @ORM\HasLifecycleCallbacks()
*/
#[UniqueEntity(
fields: ['slugEs'],
message: 'El nombre de la etiqueta ya existe',
)]
#[UniqueEntity(
fields: ['alias'],
message: 'El alias ingresado ya existe',
)]
class Etiqueta
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="nombre", type="string")
* @Assert\NotBlank(message="El campo nombre es obligatorio")
*/
private $nombre;
/**
* @var string
*
* @ORM\Column(name="slug_es", type="string", unique="true")
*/
private $slugEs;
/**
* @ORM\ManyToOne(targetEntity="Area", inversedBy="etiquetas")
* @ORM\JoinColumn(name="area_id", referencedColumnName="id")
* @Assert\NotBlank(message="Debe seleccionar una área")
*/
protected $area;
/**
* @ORM\ManyToMany(targetEntity="Producto", inversedBy="etiquetas")
* @ORM\JoinTable(name="etiqueta_producto",
* joinColumns={@ORM\JoinColumn(name="etiqueta_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="producto_id", referencedColumnName="id")}
* )
*/
protected $productos;
/**
* @var string
*
* @ORM\Column(name="alias", type="string", unique="true")
* @Assert\Sequentially({
* @Assert\NotBlank(message="El campo alias es obligatorio")
* })
*/
private $alias;
public function __construct() {
$this->productos = new ArrayCollection();
}
/**
* Get ID
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set nombre
*
* @return Area
*/
public function setNombre($nombre)
{
$this->nombre = $nombre;
if(!empty($nombre)) {
$this->setSlug();
}
return $this;
}
/**
* Get nombre
*
* @return string
*/
public function getNombre()
{
return $this->nombre;
}
/**
* Set slugEs
*
* @ORM\PreUpdate
* @ORM\PrePersist
*
* @return Area
*/
public function setSlug()
{
$slugify = new AsciiSlugger();
$this->slugEs = $slugify->slug($this->nombre)->lower();
return $this;
}
/**
* Get slugEs
*
* @return string
*/
public function getSlugEs()
{
return $this->slugEs;
}
/**
* Set Area
*
* @param Area $area
*
* @return Etiqueta
*/
public function setArea(Area $area = null)
{
$this->area = $area;
return $this;
}
/**
* Get Area
*
* @return Area
*/
public function getArea()
{
return $this->area;
}
/**
* GET Productos
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getProductos() {
return $this->productos;
}
public function addProducto(Producto $producto): self
{
if (!$this->productos->contains($producto)) {
$this->productos[] = $producto;
}
return $this;
}
public function removeProducto(Producto $producto): self
{
if ($this->productos->contains($producto)) {
$this->productos->removeElement($producto);
}
return $this;
}
public function getAlias() {
return $this->alias;
}
/**
* Set alias
*
* @return Area
*/
public function setAlias($alias)
{
$this->alias = $alias;
return $this;
}
}