* @return array */ public function getStreams(User $user) : array { $qb = $this->createQueryBuilder('streams') ->addSelect('endpoints') ->where('streams.userId = :userId') ->leftJoin('streams.endpoints', 'endpoints') ->setParameter('userId', $user->getId()) ->getQuery(); return $qb->getResult(Query::HYDRATE_ARRAY); } /** * @return Streams[] * @author Soner Sayakci */ public function getActiveStreams(): array { $qb = $this->createQueryBuilder('streams') ->addSelect('endpoints') ->addSelect('user') ->leftJoin('streams.endpoints', 'endpoints') ->leftJoin('streams.user', 'user') ->andWhere('streams.active = true') ->andWhere('endpoints.active = true') ->getQuery(); return $qb->getResult(); } /** * @param string $streamName * @param string $userName * @param string $streamKey * @return Streams * @author Soner Sayakci */ public function getStreamByNameAndUsername(string $streamName, string $userName, string $streamKey): ?Streams { $qb = $this->createQueryBuilder('streams') ->addSelect('user') ->innerJoin('streams.user', 'user') ->andWhere('streams.active = true') ->andWhere('streams.name = :streamName') ->andWhere('user.username = :userName') ->andWhere('streams.streamKey = :streamKey') ->setParameter('streamName', $streamName) ->setParameter('streamKey', $streamKey) ->setParameter('userName', $userName) ->getQuery(); $qb->setMaxResults(1); return $qb->getResult()[0]; } }