Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZendFramework]Zend_Db_Table, pobieranie danych z 2 tabel
Forum PHP.pl > Forum > PHP > Frameworki
Mlodycompany
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
IceManSpy
Nie znam się na Zendzie, ale po co podajesz parametru do funkcji, skoro ich nigdzie nie wykorzystujesz?
Mlodycompany
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
phpion
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...
Pilsener
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
Mlodycompany
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.