path = $path; $this->votes = new ArrayCollection(); } /** * @param UploadedFile $file * * @return self */ public static function fromUploadedFile(UploadedFile $file): self { $artworksDir = dirname(dirname(__DIR__)) . '/public/artworks/'; $path = str_replace($_SERVER['DOCUMENT_ROOT'], '', $artworksDir . $file->getClientOriginalName()); $file->move($artworksDir, $file->getClientOriginalName()); return new self($path); } /** * @param VoteArtwork $vote */ public function addVote(VoteArtwork $vote) { $vote->artwork = $this; $this->votes[] = $vote; } /** * @return int */ public function getVotesTotal(): int { $result = DB::$entityManager ->createQuery( 'SELECT sum(v.value) as total FROM Elements\Model\VoteArtwork v WHERE v.artwork = :artwork' ) ->setParameter('artwork', $this) ->getOneOrNullResult(); return $result['total'] ?? 0; } }