Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF][ZendFramework] Problem z łączeniem tych samych tabel
Forum PHP.pl > Forum > PHP > Frameworki
lubski
Oto przykład mojego kodu który ma wyciągnąć moje drzewko z menu:
Próbuje utworzyć zapytanie łączące dwie takie same tabele.

  1. class Application_Model_Menu extends Zend_Db_Table_Abstract {
  2. protected $_name = 'foto_menu';
  3.  
  4.  
  5. public function generateMenu()
  6. {
  7. $sel = $this->select()
  8. ->setIntegrityCheck(false)
  9. ->from( array('a' => $this->_name), array( 'name1' => 'a.name') )
  10. ->from( array('b' =>$this->_name), array('name2' => 'b.name2') )
  11. ->joinleft( array('b' => $this->_name) , 'b.parentid = a.id')
  12. ->where('a.public = 1 AND b.public = 1');
  13.  
  14. $menu = $this->fetchAll($sel);
  15.  
  16. }
  17.  
  18. }


Mam problem z połączeniem dwóch lub trzech poziomów w tabeli. Dostaje komunikat o treści:
You cannot define a correlation name 'b' more than once

Chciałbym też aby w from w sql nie dochodził na końcu znak '*' gdyż nie potrzebuje wszystkich kolumn z tabeli tylko te co mam w from.

Może mi ktoś pomóc ?

Podejrzewam że problem jest banalny ale siedzę chwile nad tym a nie znalazłem podobnych przykładów na necie.
yevaud
->from( array('b' =>$this->_name), array('name2' => 'b.name2') )
->joinleft( array('b' => $this->_name) , 'b.parentid = a.id')

nadales 2 razy alias "b"
lubski
No dobra. Ale jak nadam alias już w join to co mam wpisać w from? Potrzebuje tylko pole name z aliasem name2 i name1.
Może zapodam temat z drugiej strony. Sam sql wygląda tak.

  1. SELECT a.name AS name1, b.name AS name2 FROM foto_menu AS a
  2. LEFT JOIN foto_menu AS b ON b.parentid = a.id
  3. WHERE a.public = 1 AND b.public = 1


Potrzebuje taki sql w moim modelu.
Nie widziałem podobnego przykładu na necie. Problem chyba polega na łączeniu tej samej tabeli.

Możesz napisać jak to ma być poprawnie napisane ?
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.