em->getRepository(TrackEntity::class)->findAll(); return collect($tracks)->map(f\ref([$this, 'convert'])); } public function getById($id): Track { // TODO: Implement getById() method. } public function getManyById($ids): Collection { // TODO: Implement getManyById() method. } public function getByStop($stop): Collection { $reference = f\apply(f\ref([$this, 'reference']), StopEntity::class); $stop = array_map([Stop::class, 'reference'], encapsulate($stop)); $tracks = $this->em->createQueryBuilder() ->from(StopInTrack::class, 'st') ->join('st.track', 't') ->where('st.stop in (:stop)') ->select(['st', 't']) ->getQuery() ->execute(['stop' => array_map($reference, $stop)]); return collect($tracks)->map(function (StopInTrack $entity) { return [ $this->convert($entity->getTrack()), $entity->getOrder() ]; }); } public function getByLine($line): Collection { $reference = f\apply(f\ref([$this, 'reference']), LineEntity::class); $line = array_map([Stop::class, 'reference'], encapsulate($line)); $tracks = $this->em->createQueryBuilder() ->from(StopInTrack::class, 'st') ->join('st.track', 't') ->join('t.stops', 's') ->where('st.line in (:line)') ->select(['st', 't', 's']) ->getQuery() ->execute(['stop' => array_map($reference, $line)]); return collect($tracks)->map(f\ref([$this, 'convert'])); } }