Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework] Pobieranie danych z kilku tabel
spokz
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 1.01.2007

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


Witam.

W jaki sposób pobrać dane z kilku tabel za pomocą jednego zapytania w Zendzie?

W tej chwili mam dwie tabele: produkty i dostępność. W tabeli dostępność są różne rodzaje dostępności np. na magazynie, na zamówienie itp. W tabeli produkty jest kolumna dostępność_id, dzięki której każdy produkt ma przypisaną dostępność.
Tylko nie wiem w jaki sposób zrobić zapytanie, które zrobi mi join'a łaczącego te tabele. I nie chodzi o treść zapytania gdyż myślę, że poniższe jest dobrze wpisane w kontroler:

  1. $select = $produkty->select();
  2. $select->from(array('p' => 'produkty', 'd' => 'dotepnosc'), array('p.id','p.nazwa','p.model','p.cena','p.opis', 'c.nazwa'));
  3. $select->join(array('d'),'p.dostepnosc_id = d.id');
  4.  
  5. $this->view->produkty = $produkty->fetchProducts();
  6.  

tylko chodzi o wyznaczanie tabel, z których framework ma pobierać dane, gdyż w tej chwili pobiera tylko z tabeli wpisane w modelu "Products":
  1. protected $_name = 'cs_products';


a nie z $selecta którego opisałem powyżej.
I mam ten problem w każdym przypadku, nie mówiąc o przypadkach kiedy będę chciał pobrać dane z więcej niż 2 tabel.

Bardzo proszę o pomoc, gdyż jestem początkujący w Zendzie i php ogólnie i nie mogę sobie sam poradzić z tym problemem.

Ten post edytował spokz 7.04.2010, 19:09:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
spokz
post
Post #2





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 1.01.2007

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


Po modyfikacjach wygląda to tak:

  1. $select = $produkty->select();
  2. $select->from(array('p' => 'produkty', 'd' => 'dotepnosc'), array('p.id', 'p.nazwa', 'p.model', 'p.cena', 'p.opis', 'd.nazwa'));
  3. $select->join(array('d' => 'dostepnosc'), 'p.dostepnosc_id = d.id');
  4.  
  5. $this->view->produkty = $produkty->getAdapter()->fetchAll($select);


i pojawia się niestety błąd:

  1. Fatal error: Uncaught exception 'Zend_Db_Table_Select_Exception' with message 'Select query cannot join with another table' in \lib\Zend\Db\Table\Select.php:215 Stack trace: #0 \lib\Zend\Db\Adapter\Abstract.php(456): Zend_Db_Table_Select->assemble() #1 \lib\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array) #2 \lib\Zend\Db\Adapter\Abstract.php(706): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select), Array) #3 \app\controllers\TlistController.php(35): Zend_Db_Adapter_Abstract->fetchAll(Object(Zend_Db_Table_Select)) #4 \lib\Zend\Controller\Action.php(513): TlistController->indexAction() #5 \lib\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('indexAction') #6 \lib\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(O in \lib\Zend\Db\Table\Select.php on line 215
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: 10.10.2025 - 19:14