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
chlebik
post
Post #2





Grupa: Zarejestrowani
Postów: 113
Pomógł: 5
Dołączył: 12.09.2006
Skąd: Pruszków/Warszawa

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


Nie lepiej tak:

  1. $oDb = Zend_Registry::get('db');
  2. $oSelect = $oDb->select();
  3.  
  4. $oSelect->from( 'produkty AS p', array( 'id','nazwa','model','cena','opis' ) )
  5. ->join( 'dostepnosc AS d', 'p.dostepnosc_id = d.id', array( 'tutaj','kolumny','do','wyciagniecia','z','tej','tabeli' ) );
  6.  
  7. $aRes = $oDb->fetchAll( $oSelect );



I w ogole w sumie nie lepiej dla ww. sytuacji po prostu zrobic typ wyliczeniowy w tabeli 'produkty'? Po co dodatkowy JOIN skoro mozna to bardzo obrazowo (bo slowami) opisac poprzez dostepne elementy dla kolumny (plus walidacja na poziomie insertow do bazy)?

Ten post edytował chlebik 8.04.2010, 23:12:23
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.09.2025 - 10:19