src/Entity/Directories.php line 30

  1. <?php
  2. namespace App\Entity;
  3. use ApiPlatform\Metadata\ApiResource;
  4. use ApiPlatform\Metadata\Delete;
  5. use ApiPlatform\Metadata\GetCollection;
  6. use ApiPlatform\Metadata\Patch;
  7. use ApiPlatform\Metadata\Post;
  8. use App\Entity\Traits\CreatedAtTrait;
  9. use App\Entity\Traits\UpdatedAtTrait;
  10. use App\Repository\DirectoriesRepository;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\Common\Collections\Collection;
  13. use Doctrine\ORM\Mapping as ORM;
  14. use Symfony\Component\Serializer\Annotation\Groups;
  15. #[ORM\HasLifecycleCallbacks]
  16. #[ORM\Entity(repositoryClassDirectoriesRepository::class)]
  17. #[ApiResource(
  18.     operations: [
  19.         new GetCollection(),
  20.         new Post(
  21.             denormalizationContext: ['groups' => ['directories:write']]
  22.         ),
  23.         new Delete()
  24.     ],
  25.     paginationEnabledfalse
  26. )]
  27. class Directories
  28. {
  29.     use CreatedAtTrait;
  30.     use UpdatedAtTrait;
  31.     #[ORM\Id]
  32.     #[ORM\GeneratedValue]
  33.     #[ORM\Column]
  34.     private ?int $id null;
  35.     #[ORM\Column(length255)]
  36.     #[Groups('directories:write')]
  37.     private ?string $title null;
  38.     #[Groups('directories:write')]
  39.     #[ORM\ManyToOne(targetEntityself::class, inversedBy'directories')]
  40.     private ?self $parent null;
  41.     #[ORM\OneToMany(mappedBy'parent'targetEntityself::class)]
  42.     private Collection $directories;
  43.     #[ORM\OneToMany(mappedBy'directory'targetEntityMedia::class)]
  44.     private Collection $media;
  45.     public function __construct()
  46.     {
  47.         $this->directories = new ArrayCollection();
  48.         $this->media = new ArrayCollection();
  49.     }
  50.     public function getId(): ?int
  51.     {
  52.         return $this->id;
  53.     }
  54.     public function getTitle(): ?string
  55.     {
  56.         return $this->title;
  57.     }
  58.     public function setTitle(string $title): static
  59.     {
  60.         $this->title $title;
  61.         return $this;
  62.     }
  63.     public function getParent(): ?self
  64.     {
  65.         return $this->parent;
  66.     }
  67.     public function setParent(?self $parent): static
  68.     {
  69.         $this->parent $parent;
  70.         return $this;
  71.     }
  72.     /**
  73.      * @return Collection<int, self>
  74.      */
  75.     public function getDirectories(): Collection
  76.     {
  77.         return $this->directories;
  78.     }
  79.     public function addDirectory(self $directory): static
  80.     {
  81.         if (!$this->directories->contains($directory)) {
  82.             $this->directories->add($directory);
  83.             $directory->setParent($this);
  84.         }
  85.         return $this;
  86.     }
  87.     public function removeDirectory(self $directory): static
  88.     {
  89.         if ($this->directories->removeElement($directory)) {
  90.             // set the owning side to null (unless already changed)
  91.             if ($directory->getParent() === $this) {
  92.                 $directory->setParent(null);
  93.             }
  94.         }
  95.         return $this;
  96.     }
  97.     /**
  98.      * @return Collection<int, Media>
  99.      */
  100.     public function getMedia(): Collection
  101.     {
  102.         return $this->media;
  103.     }
  104.     public function addMedium(Media $medium): static
  105.     {
  106.         if (!$this->media->contains($medium)) {
  107.             $this->media->add($medium);
  108.             $medium->setDirectory($this);
  109.         }
  110.         return $this;
  111.     }
  112.     public function removeMedium(Media $medium): static
  113.     {
  114.         if ($this->media->removeElement($medium)) {
  115.             // set the owning side to null (unless already changed)
  116.             if ($medium->getDirectory() === $this) {
  117.                 $medium->setDirectory(null);
  118.             }
  119.         }
  120.         return $this;
  121.     }
  122. }