entityManager->findAll(ImageSlot::class); } public function findBySlotName(string $slotName): ImageSlot { return $this->entityManager->findOneBy(ImageSlot::class, ['slot_name' => $slotName]); } public function findById(string $id): ImageSlot { return $this->entityManager->find(ImageSlot::class, $id); } public function save(ImageSlot $imageSlot): object { return $this->entityManager->save($imageSlot); } /** * @return array */ public function findAllWithImages(): array { $slots = $this->entityManager->findAll(ImageSlot::class); return array_map(function (ImageSlot $slot) { $image = null; if ($slot->imageId) { $image = $this->entityManager->find(Image::class, $slot->imageId); } return ImageSlotView::fromSlot($slot, $image); }, $slots); } public function findByIdWithImage(string $id): ImageSlotView { $slot = $this->entityManager->find(ImageSlot::class, $id); if (! $slot) { throw new \RuntimeException("ImageSlot with ID {$id} not found"); } $image = null; if ($slot->imageId) { $image = $this->entityManager->find(Image::class, $slot->imageId); } return ImageSlotView::fromSlot($slot, $image); } public function updateImageId(string $slotId, string $imageId): void { $slot = $this->findById($slotId); #$slot->imageId = $imageId; $slot = new ImageSlot( $slot->id, $slot->slotName, $imageId ); $this->entityManager->save($slot); } }