Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]Zend_Db_Table, pobieranie danych z 2 tabel
Mlodycompany
post
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Otóż mam bardzo wielki problem, ponieważ nie daje rady pobierać danych z 2 tabel w jednej klasie.
  1. <?php
  2. class Training extends Zend_Db_Table {
  3. public $_name = 'szkolenia';
  4. public $_name2 = 'szkolenia-graczy';
  5. public function getLevel($idT, $idG){
  6. $rows = $this->select()->from($this->_name2)->where('ID = ?', '1')->query()->fetchAll();
  7. $object = $rows[0];
  8. print_r($object);
  9. }
  10. }

Jak wywołam tą funkcję
  1. $training = new Training();
  2. $training->getLevel('1','4');

to dostaję błąd
Kod
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146...

Dlaczego 2 tabele? Otóż w 1 są opisy szkoleń, a w 2 szkolenia wykonane przez graczy i potrzebuje połączyć dane z tych 2 tabel.
Proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
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 znam się na Zendzie, ale po co podajesz parametru do funkcji, skoro ich nigdzie nie wykorzystujesz?


--------------------
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Cytat(IceManSpy @ 26.12.2010, 13:01:04 ) *
Nie znam się na Zendzie, ale po co podajesz parametru do funkcji, skoro ich nigdzie nie wykorzystujesz?

Te parametry akuratnie nie są do tego zapytania. Jak mi nie działało 1 zapytanie to zrobiłem 2 prostsze, a parametry zostały. A jak się na Zendzie nie znasz to nie udzielaj się smile.gif
Go to the top of the page
+Quote Post
phpion
post
Post #4





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




Problemem pewnie jest myślnik w nazwie tabeli. Spróbuj testowo podstawić inną tabelę, w nazwie której nie ma myślnika.

Cytat(Mlodycompany @ 26.12.2010, 13:10:24 ) *
A jak się na Zendzie nie znasz to nie udzielaj się smile.gif

Miłe to to nie było. Troszkę kultury...
Go to the top of the page
+Quote Post
Pilsener
post
Post #5





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


A zajrzałeś do dokumentacji? ZF narzuca nie bez powodu pewną logikę aplikacji, która porządkuje nie tylko nazewnictwo i strukturę folderów lecz także pobieranie danych, model danych w tym wypadku powinien nazywać się Model_nazwatabeli i warto trzymać się zasady jedna tabela = jeden model by uniknąć takich problemów. Jak ktoś potem ma się domyśleć, że pobranie danych z tabeli a i b odbywa się w modelu o nazwie "gucio", który jest w dodatku w lokalizacji c/z?

A jeśli już musisz odwoływać się do innej tabeli:
http://framework.zend.com/manual/en/zend.db.table.html - example #27
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #6





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


podstawiłem tabele bez "-" w nazwie i też nie działa, ten sam błąd.
Cytat
Miłe to to nie było. Troszkę kultury...
no może rzeczywiście, przepraszam

zrobiłem tak
  1. class Training extends Zend_Db_Table {
  2. public $_name = 'szkolenia';
  3. public $_name2 = 'szkolenia-graczy';
  4. public function getLevel($idT, $idG){
  5. $rows = $this->select()->from($this->_name2)->where('idSzkolenia = ?', $idT)->where('idGracza = ?', $idG)->setIntegrityCheck(false)->query()->fetchAll();
  6. return count($rows);
  7. }

i działa. Dziękować smile.gif
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 Aktualny czas: 20.08.2025 - 16:47