• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Symfony - jak wywołać metodę z repozytorium

0 głosów
625 wizyt
pytanie zadane 6 sierpnia 2018 w PHP przez sebastian_23 Początkujący (380 p.)
Witam, wie ktoś może jak wywołać metodę z repozytorium?

napisałem sobie nową metodę która zwraca mi wybrane rekordy według moje zapytania w klasie repozytorium stworzonej przez Doctrine podczas utworzenia Encji,

teraz chciałbym moją metodę wywołać w kontrolerze i odebrać wynik tylko nie wiem jak wywołać tą metodę:(

Pomożecie:)?

1 odpowiedź

0 głosów
odpowiedź 6 sierpnia 2018 przez Ehlert Ekspert (215,210 p.)
  1. Wstrzyknij do Controllera EntityManager i na nim wywołaj getRepository. 
  2. Wstrzyknij do Controllera ManagerRegistry i analogicznie
  3. Wszystknij bezpośrednio repo. Aby tak móc, najlepiej żeby dziedziczyło po ServiceEntityRepository. I wtedy nadpisujesz konstruktor. 

Później dorzucę przykład.

komentarz 6 sierpnia 2018 przez sebastian_23 Początkujący (380 p.)
$foo = $em->getRepository->(MojeRepo::class)

$foo2 = $managerRegistry->getRepository(MojeRepo::class);

 

tak?

widzę tylko podstawowe zapytania jak odnoszę się do tego obiektu, ale nie widze mojej metody dalej:(

co robię źle?
komentarz 6 sierpnia 2018 przez Ehlert Ekspert (215,210 p.)
<?php

/** @var KlasaRepo $repo */
$repo = ...->getRepository(MojaEncja::class)... 

 

komentarz 6 sierpnia 2018 przez sebastian_23 Początkujący (380 p.)

niestety nie działa, jednak kiedy wstrzyknę moją klasę repo w kontrolerze indexAction(EntityManagerInterface $em, AppsRepository $repository)

to mogę wywołać tą metode

/** @var AppsRepository $repo */
$repo = $em->getRepository(Apps::class);//tutaj nie mogę wywołac mojej metody
$result = $repository->findParenIdWhereId($id);//tutaj udaje mi się wywołać jednak mam błąd podczas wyświetlania sytrony

ale kiedy to robię otrzymuję błąd:

[Semantical Error] line 0, col 30 near 'apps
': Error: Class 'apps' is not defined.

 

to moja metoda w repo:

    /**
     * @param $id
     * @return mixed
     */
    public function findParenIdWhereId($id)
    {
        $entityManager = $this->getEntityManager();

        $query = $entityManager->createQuery(
            'SELECT parent_id
        FROM apps
        WHERE id = :id'
        )->setParameter('id', $id);

        return $query->execute();
    }

 

komentarz 6 sierpnia 2018 przez sebastian_23 Początkujący (380 p.)

ok jestem krok dalej już:)

zamieniłem w repo:

FROM apps

na:

FROM App\Entity\Apps p

Podobne pytania

0 głosów
0 odpowiedzi 748 wizyt
0 głosów
1 odpowiedź 845 wizyt
0 głosów
1 odpowiedź 549 wizyt
pytanie zadane 30 sierpnia 2018 w PHP przez Gambr Dyskutant (7,530 p.)

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...