bundles/mldev-catalog-bundle/src/Entity/ProductImage.php line 17

Open in your IDE?
  1. <?php
  2. namespace MLDev\CatalogBundle\Entity;
  3. use Doctrine\ORM\Mapping as ORM;
  4. use JsonSerializable;
  5. use MLDev\BaseBundle\Entity\Traits\Timestampable;
  6. use Symfony\Component\HttpFoundation\File\File;
  7. use MLDev\CatalogBundle\Repository\ProductImageRepository;
  8. use function file_exists;
  9. /**
  10.  * @ORM\Table(name="MLDev_Product_Image")
  11.  * @ORM\Entity(repositoryClass=ProductImageRepository::class)
  12.  * @ORM\HasLifecycleCallbacks()
  13.  */
  14. class ProductImage implements JsonSerializable
  15. {
  16.     use Timestampable;
  17.     /**
  18.      * @ORM\Id
  19.      * @ORM\Column(name="id", type="integer")
  20.      * @ORM\GeneratedValue(strategy="AUTO")
  21.      */
  22.     private $id;
  23.     /**
  24.      * @ORM\Column(type="string", name="name", length=255)
  25.      */
  26.     private $name;
  27.     /**
  28.      * @ORM\Column(type="string", name="path", length=255)
  29.      */
  30.     private $path;
  31.     /**
  32.      * @ORM\Column(type="integer", name="priority", nullable=true)
  33.      */
  34.     private $priority 100;
  35.     /**
  36.      * @ORM\Column(type="string", name="uri", length=255)
  37.      */
  38.     private $uri;
  39.     /**
  40.      * @ORM\ManyToOne(targetEntity=Product::class, inversedBy="images", cascade={"persist"})
  41.      * @ORM\JoinColumn(name="product_id", referencedColumnName="id")
  42.      */
  43.     private $product;
  44.     /**
  45.      * @var File|null
  46.      */
  47.     private $file;
  48.     public function getId(): ?int
  49.     {
  50.         return $this->id;
  51.     }
  52.     public function getName(): ?string
  53.     {
  54.         return $this->name;
  55.     }
  56.     public function setName(?string $name): void
  57.     {
  58.         $this->name $name;
  59.     }
  60.     public function getPath(): ?string
  61.     {
  62.         return $this->path;
  63.     }
  64.     public function setPath(?string $path): void
  65.     {
  66.         $this->path $path;
  67.     }
  68.     public function getPriority(): int
  69.     {
  70.         return $this->priority;
  71.     }
  72.     public function setPriority(int $priority): self
  73.     {
  74.         $this->priority $priority;
  75.         return $this;
  76.     }
  77.     public function getProduct(): ?Product
  78.     {
  79.         return $this->product;
  80.     }
  81.     public function setProduct(?Product $product): void
  82.     {
  83.         $this->product $product;
  84.     }
  85.     public function getFile(): ?File
  86.     {
  87.         if ($this->file instanceof File) {
  88.             return $this->file;
  89.         }
  90.         if (file_exists($this->path)) {
  91.             return new File($this->path);
  92.         }
  93.         return null;
  94.     }
  95.     public function setFile(File $file): void
  96.     {
  97.         $this->file $file;
  98.     }
  99.     public function getUri(): ?string
  100.     {
  101.         return $this->uri;
  102.     }
  103.     public function setUri(?string $uri)
  104.     {
  105.         $this->uri $uri;
  106.     }
  107.     public function jsonSerialize(): array
  108.     {
  109.         return [
  110.             'id' => $this->getId(),
  111.             'name' => $this->getName(),
  112.             'url' => $this->getUri(),
  113.             'path' => $this->getPath(),
  114.         ];
  115.     }
  116. }