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
IceManSpy
post
Post #2





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

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


Nie wiem czy nie zrobię jak wcześniej z pobieraniem nazwy, czyli 1 zapytanie do pobrania roli użytkownika na podstawie numeru ID, a potem switch->case i w zależności od tej roli wykona się odpowiednie zapytanie. Tylko wtedy będzie tyle zapytań ile wiadomości :/
Bo trochę nie kumam tych pętli z odpowiednimi ID.

Wymyśliłem takie zapytanie:
  1. SELECT message.* , a.adm_name AS name , p.pro_name AS name, s.stu_name AS name
  2. FROM message
  3. LEFT JOIN administrator a
  4. ON a.use_id = message.mes_from
  5. LEFT JOIN professor p
  6. ON p.use_id = message.mes_from
  7. LEFT JOIN student s
  8. ON s.use_id = message.mes_from
  9. WHERE message.mes_from = 8 /* numer ID usera*/

I to zapytanie spełnia moje oczekiwania gdyby nie to, że pojawiają mi się kolumny name, name1 i name2. Jakby dało się te 3 kolumny zebrać jakoś w jedną o nazwie name, to byłoby już bosko (IMG:style_emoticons/default/smile.gif)

=== EDYCIA ===

Napisałem takie coś:
  1. SELECT message.* , CONCAT_WS('',a.adm_name, p.pro_name,s.stu_name) AS name,
  2. CONCAT_WS('',a.adm_surname, p.pro_surname,s.stu_surname) AS surname
  3. FROM message
  4. LEFT JOIN administrator a
  5. ON a.use_id = message.mes_from
  6. LEFT JOIN professor p
  7. ON p.use_id = message.mes_from
  8. LEFT JOIN student s
  9. ON s.use_id = message.mes_from
  10. WHERE message.mes_from = 8

Nie wydaje mi się to zbyt eleganckie, ale chyba jest skuteczne, bo otrzymałem dane, które chciałem. Teraz nie wiem czy uda mi się to przerobić na metody Zendowskie (IMG:style_emoticons/default/smile.gif) Jak się nie uda, to trzeba będzie napisać czyste zapytanie i podstawiać zmienną jako parametr.

P.S. Temat już zszedł na bok, jako MySQL.

Ten post edytował IceManSpy 28.08.2011, 22:15:36
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: 26.12.2025 - 11:29