Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony][Symfony2][SF2]NonUniqueResult
Forum PHP.pl > Forum > PHP > Frameworki
newbie96
Witam, chciałbym wyświetlić nazwę użytkownika danego komentarza.Tym kawałkiem wyświetlam komentarze.
  1.  
  2. $repository = $this->getDoctrine()
  3. ->getRepository('AcmeMainBundle:Comments');
  4. $query = $repository->createQueryBuilder('c')
  5. ->where('c.post_id ='. $postId)
  6. ->getQuery();
  7.  
  8. $comment = $query->getResult();
  9.  
A tym próbuję pobrać nazwę użytkownika.
  1.  
  2. $id = $query->getSingleResult()->getUser_id();
  3.  
  4. $UserComment = $this->getDoctrine()
  5. ->getRepository('AcmeMainBundle:Comments')
  6. ->find($id);
  7.  
  8. $username = $UserComment->getUsers()->getName();
Lecz symfony wyrzuca 500 Internal Server Error - NonUniqueResultException. Jak mogę inaczej pobrać id? lub co muszę zmienić żeby nie było błędu?
Dodam że jeśli stworzę stalą id, to wyświetli się nazwa.

Będę wdzięczny za każdą pomoc.
Pozdrawiam
cadavre
Po to jest repozytorium w Doctrine żeby z niego korzystać.
  1. $comment = $this->getDoctrine()->getRepository('AcmeMainBundle:Comments')->find($postId);


Pokaż encję Comments to dopiszę resztę. : )
newbie96
Kod
/**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;


    /**
     * @ORM\Column(type="string", length=255)
     */

    protected $user_id;



    /**
     * @ORM\Column(type="string")
     */


    protected $content;


    /**
     * @ORM\Column(type="string", length=255)
     */

    protected $date;



    /**
     * @ORM\Column(type="string", length=255)
     *
     */

    protected $post_id;

    /**
     * @ORM\ManyToOne(targetEntity="Users", inversedBy="comments")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */

    protected $users;
thek
Pytanie... Po co są relacje, skoro z nich nie korzystasz? Skoro masz już komentarze, to dla każdego wywołanie getUsers (a zapewne taka metoda jest w klasie Comments), zwrócić Ci powinna encję Usera. Z niej sobie możesz co chcesz wyciągnąć o użytkowniku.

Co do błędu to jak wół pisze w dokumentacji Symfony2 przy Doctrine:
Cytat
The getSingleResult() method throws a Doctrine\ORM\NoResultException exception if no results are returned and a Doctrine\ORM\NonUniqueResultException if more than one result is returned.
Chyba już wiesz gdzie szukać błędu smile.gif

Poza tym logika nieco mnie przytłacza... Używasz USER_ID by przypisać je do comment id i potem chcesz z jego pomocą wyciągać username... Coś chyba jest tu nie tak...
cadavre
Proponuję pierwsze popisać parę prostych rzeczy w samym PHP z PDO. Dobrze wiedzieć jak coś działa w tle i dlaczego pewne rzeczy się dzieją. Piszę to bo widać po Twoim kodzie, że dopiero zaczynasz z tym językiem/frameworkiem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.