Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony] pobieranie danych z 2 tabel
phpion
post
Post #1





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hejka,
mam problem i nie bardzo wiem jak to ugryźć.
Otóż: mam tabelę:
  1. ogloszenia (id, kategoria, tytul...)

i jest to tabela macierzysta. Część podkategorii ma rozszerzoną tą tabelę o inną np.
  1. samochody (id_ogloszenia, marka, model...)

lub też
  1. mieszkania (id_ogloszenia, powierzchnia, pietro...)

Na stronie głównej pobieram dane tylko z tabeli macierzystej (tj. 'ogloszenia), natomiast przy wejściu w odpowiednią kategorię chciałbym do standardowych danych dodać te charakterystyczne dla danej kategorii. Jak się do tego zabrać? Czy po prostu osobne klasy dla każdego typu ogłoszenia, a w nich metoda getData() pobierająca dane zapytaniem wpisanym ręcznie. Tak bym zrobił standardowo ale jak to zrobić poprawnie w Symfony?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
misiaczekmarek
post
Post #2





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 25.06.2007

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


witam,

nie będę zakładał nowego tematu bo problem jest pokrewny.

mam problem z wyswietleniem pola (NAZWA) z innej tablicy (Sl_Ulice).

w metodzie odpowiedzialnej za listowanie zawartoœci tablicy Sl_Adresy doda³em:
1) LEFT po odpowiednich polach obu tabel
2) pole NAZWA z tablicy Sl_Ulice

  1. <?php
  2. public function executeList()
  3. {
  4. $c = new Criteria();
  5. $c->clearSelectColumns();
  6. $c->addJoin(Sl_AdresyPeer::ID_ULICY, Sl_UlicePeer::ID_ULICY,Criteria::LEFT_JOIN);
  7.  
  8. $c->addSelectColumn(Sl_AdresyPeer::ID_ADRES);
  9. $c->addSelectColumn(Sl_AdresyPeer::ID_PREFIX);
  10. $c->addSelectColumn(Sl_AdresyPeer::ID_ULICY);
  11. $c->addSelectColumn(Sl_AdresyPeer::NUMER);
  12. $c->addSelectColumn(Sl_AdresyPeer::ID_KOD_POCZTOWY);
  13. $c->addSelectColumn(Sl_AdresyPeer::ID_ARKUSZ);
  14. $c->addSelectColumn(Sl_AdresyPeer::X);
  15. $c->addSelectColumn(Sl_AdresyPeer::Y);
  16. $c->addSelectColumn(Sl_UlicePeer::NAZWA);
  17.  
  18. $this->sl_adresys = Sl_AdresyPeer::doSelect($c);
  19. }
  20. ?>


zapytanie do bazy jest tworzone prawidłowo (fragment pliku log):

  1. SELECT sl_adresy.ID_ADRES, sl_adresy.ID_PREFIX, sl_adresy.ID_ULICY,
  2. sl_adresy.NUMER, sl_adresy.ID_KOD_POCZTOWY, sl_adresy.ID_ARKUSZ, sl_adresy.X,
  3. sl_adresy.Y, sl_ulice.NAZWA FROM sl_adresy LEFT JOIN sl_ulice ON
  4. (sl_adresy.ID_ULICY=sl_ulice.ID_ULICY)


i za cholerę nie mogę wyświetlić sl_ulice.NAZWA w templatce listSuccess.php
próbowałem róźnych metod - ostatnia jest taka (fragment):
  1. <?php foreach ($sl_adresys as $sl_adresy): ?>
  2. <tr>
  3. <td><?php echo link_to($sl_adresy->getIdAdres(), 'sl_adresy/show?id_adres='.$sl_adresy->getIdAdres()) ?></td>
  4. <td><?php echo $sl_adresy->getIdPrefix() ?></td>
  5. <td><?php echo $sl_adresy->getIdUlicy() ?></td>
  6. <td><?php echo $sl_adresy->getNumer() ?></td>
  7. <td><?php echo $sl_adresy->getIdKodPocztowy() ?></td>
  8. <td><?php echo $sl_adresy->getIdArkusz() ?></td>
  9. <td><?php echo $sl_adresy->getX() ?></td>
  10. <td><?php echo $sl_adresy->getY() ?></td>
  11.  
  12. <td><?php echo $sl_adresy->getString(9) ?></td>
  13. </tr>
  14. <?php endforeach; ?>

i otrzymuję: Fatal error: Call to undefined method Sl_Adresy::getString()
Sprawdziłem także dla $sl_adresy->getString(1) - ten sam błąd.
Przecież; getString() nie jest zwiazany z Sl_Adresy ?

Czy też mój problem można rozwiązać nie przy pomocy propela tylko creole i zrobic same hydro (patrz - to do mnie - odpowiedź wyżej) ? ale zapytanie sql jest generowane dobrze.

pozdrawiam

Ten post edytował misiaczekmarek 8.07.2007, 22:28:26
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 - 22:15