Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony2] Wyświetlanie pobranych danych z bazy w twigu
BigPig
post 4.08.2014, 21:02:04
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
toffiak
post 5.08.2014, 06:18:06
Post #2





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

Ostrzeżenie: (0%)
-----


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();



--------------------
Go to the top of the page
+Quote Post
BigPig
post 5.08.2014, 07:43:35
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 18.06.2013
Skąd: Białystok

Ostrzeżenie: (0%)
-----


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 %}
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 21:53