Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SF][Symfony2] Wyświetlanie pobranych danych z bazy w twigu
Forum PHP.pl > Forum > PHP > Frameworki
BigPig
Witajcie, mam małe problemy.

1) Jak odzyskać pobrane dane z bazy (kod w kontrolerze)? Pobrałem dane z dwóch encji, News i Comments, ale problem polega na tym, że mogę pobrać dane tylko z encji News(przykład pokazany w twigu)

2) Jak mogę sprawdzić jak wygląda obiekt z pobranymi danymi ( zmienna $fetched_news z Kontrolera), żeby zobaczyć strukturę obiektu i to co się pobrało?
Próbowałem print_r($fetched_news) i {{ dump(fetched_news }}, ale przy pierwszy wywala masę kodu na ekran i nie chce przestać, a przy drugim zawiesza sie apka.

3) W encjach News i Comments, jest taka sama kolumna o nazwie 'content'. Jak pobrać dane z tej kolumny? Próbowałem czegoś w stylu
'fetched_news.comments.content' lub 'fetched_news.news.content', ale to nie szło. W kodzie z twig'u wszystko jest pokazane, że mam dostęp do newsów, ale do komentarzy już nie.

Długo z tym walczę, także proszę o pomoc smile.gif

Z twigu:
  1. {% for news in fetched_news %}
  2. <div class="col-md-5">
  3. <p class="news_title">{{ news.title }}</p>
  4. {{ (news.content|slice(0,600))|raw }}
  5.  
  6. {{ news.ratePlus }} {# CAN'T GET THIS!#}
  7. {% else %}
  8. {% endfor %}


Z kontrolera:
  1.  
  2. public function indexAction()
  3. {
  4. $em = $this->getDoctrine()->getManager();
  5. $query = $em->createQuery("SELECT n, a FROM BlogAdminBundle:News n JOIN n.comments a");
  6. $fetched_news = $query->getResult();
  7.  
  8.  
  9. return array('fetched_news' => $fetched_news);
  10. }



Kod z webprofiler'a
  1. SELECT
  2. n0_.id AS id0,
  3. n0_.content AS content1,
  4. n0_.title AS title2,
  5. n0_.date_add AS date_add3,
  6. n0_.date_active AS date_active4,
  7. n0_.settings AS settings5,
  8. c1_.id AS id6,
  9. c1_.content AS content7,
  10. c1_.date_add AS date_add8,
  11. c1_.rate_plus AS rate_plus9,
  12. c1_.rate_minus AS rate_minus10,
  13. n0_.user_id AS user_id11,
  14. c1_.user_id AS user_id12,
  15. c1_.news_id AS news_id13
  16. FROM
  17. News n0_
  18. INNER JOIN Comments c1_ ON n0_.id = c1_.news_id
toffiak
Zamiast hydrować wyniki jako połączone obiekty pobierz je jako tablicę, dzięki temu będziesz mógł je wyświetlić np poprzez print_r, czyli zamiast:

  1. $fetched_news = $query->getResult();
  2.  
  3. return array('fetched_news' => $fetched_news);


zastosuj

  1. return $query->getArrayResult();

BigPig
Tak, to słuszna uwaga. Jeśli chodzi o resztę to przy pomocy innych programistów, udało mi się problem rozwiązać smile.gif

Jako, że encje są ze sobą naturalnie połączone, to wystarczyło, że pobieram encję NEWS i potem mam z niej dostęp do COMMENTS. Działa to tak:

  1. {% for news in fetched_news %}
  2. <div class="col-md-5">
  3. <p class="news_title">{{ news.title }}</p>
  4. {{ (news.content|slice(0,600))|raw }}
  5.  
  6.  
  7. {% for comment in news.comments %}
  8. {{ comment.content }}
  9. {% endfor %}
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.