Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF] Pobieranie danych i wyświetlanie, w 2 pętlach równolegle
IceManSpy
post
Post #1





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


Witam

Mam pewien problem, który nie wiem jak rozwiązać. Mam model i tablę w bazie odpowiadającą za prywatne wiadomości. Pole od (nadawca) i do (adresat) są jako int - numer ID usera.
W modelu mam metodę pobierającą wszystkie wiadomości. Wszystko jest ok, tylko nie wiem jak napisać wyświetlanie danych usera (login) przy polu nadawcy.
Nie mogę napisać pola do, bo potrzebuje jego ID do wysłania np odpowiedzi.

Aktualnie mam zrobione tak, że pobieram całą listę w kontrolerze, przekazuje do widoku a w widoku pobieram metodą PobierzLogin z modelu wiadomości login i wyświetlam. Ale takie rozwiązanie nie może być, bo przecież model nie powinien być w widoku.

Chciałbym pobrać wszystkie wiadomości, potem puścić pętle (foreach / while ? ) aby odczytał login usera i dodał kolejną wartość do tablicy. Nie wiem ja kto zrobić :/ Wiadomości pobieram przez fetchAll.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
melkorm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Jak masz zapytanie odnośnie wiadomości to możesz :
  1. $usersIds = array();
  2. foreach($messages as $m)
  3. {
  4. $usersIds[ $m['idFrom'] ] = $m['idFrom'];
  5. $usersIds[ $m['idTo'] ] = $m['idTo'];
  6. }
  7.  
  8. // później takie quey: (z warunkiem czy przypadkiem usersIds nie jest puste - inaczej dostaniesz wyjątkiem
  9. $this->fetchPairs(
  10. $this->select()->from('users', array('idUser', 'login'))->where('idUser IN (?)', $usersIds)
  11. );
  12.  
  13. // zrób sobei var dump'a a zobaczysz coś w stylu:
  14. 5 => 'login'
  15. ....
  16. ); // gdzie klucz tablicy to idUser'a a wartość to login
  17.  
  18. // i wtedy tylko przekazać to do widoku
  19. // i jak masz pętle to odpowiednio podstawić pod klucz tablicy
  20.  


Oczywiście mógłbyś zrobić 2 razy JOIN'a ale sądzę że dwa zapytania będą szybsze, chociaż nigdy tego nie testowałem, więc jak się Tobie nudzi możesz potestwoać i zaprezentować wyniki =D

PS. Metoda fetchPairs jest dostępna z poziomu $this->_db .

Ten post edytował melkorm 28.08.2011, 11:33:31
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 24.12.2025 - 14:34