Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF] Zend_DB_Table a JOIN i SELECT
G3LO
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.08.2007

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


Witam,

próbuję zrealizować za pomocą Zend_DB_Table następujące zapytanie:
  1. SELECT (jakies dane) FROM tab1 T1 JOIN tab2 T2 ON T1.id = T2.fk1

na framework.zend nic nie zostało na ten temat napisane, w API nie mogę znaleźć żadnej metody którą bym podejrzeał
o łączenie tabel.
rowiązanie
  1. <?php
  2. $items = $tab1->fetchAll ();
  3. foreach ($items as $item)
  4. {
  5. $dep_rows = $tab1->getDepandantRowset ();
  6. ..i zapisz gdzies
  7. }
  8. ?>

nie chcę bo do bazy poleci 50+ zapytań podczas gdy wystarczy 1

drugą kwestią która mnie ciekawi to rzutowanie w zapytaniach za pomocą Zend_DB_Table:
jak zrobić np.
  1. SELECT numer FROM samochody
?
fetch robi zawsze SELECT * - co czasem nie jest za bardzo porządane

prosiłbym uprzejmie o informacje o rozwiązaniach powyższych problemach jeśli ktoś takowe posiada.
Go to the top of the page
+Quote Post
Sabistik
post
Post #2


Administrator wortalu


Grupa: Przyjaciele php.pl
Postów: 960
Pomógł: 39
Dołączył: 21.10.2003
Skąd: Kraków

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


Nie wiem po co piszesz tu jak na zend-framework.pl dostałeś już poprawną odpowiedź..
Go to the top of the page
+Quote Post
wolditm
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 2
Dołączył: 20.07.2005

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


Ostatnio też się bawie Zend_Db, co do joinów to na tym etapie myśle nie pozostaje nic innego jak w danym modelu dopisanie nowej metody np.
  1. <?php
  2. function getArticlesByCo&#347;( $id )
  3. {
  4. $select = $this->getAdapter()->select();
  5. $select->from()->join()
  6. // itd
  7. }
  8. ?>

Co do drugiego problemu to ja zrobiłem coś takiego w Zend_Db_Table:
  1. <?php
  2. function setFieldsToFetch( $fields )
  3. {
  4. $this->_cols = $fields;
  5. return $this;
  6. }
  7. // później robisz
  8. $model->setFieldsToFetch( array( 'id', 'title', 'cos tam jeszcze' )->fetchAll();
  9. ?>

Powyższe rozwiazanie nie jest idealne, ale działa.

Ten post edytował wolditm 13.08.2007, 11:54:21


--------------------
Wspomnienia
Go to the top of the page
+Quote Post
G3LO
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 13.08.2007

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


Cytat(Sabistik @ 13.08.2007, 12:05:33 ) *
Nie wiem po co piszesz tu jak na zend-framework.pl dostałeś już poprawną odpowiedź..


Poprawność tamtej odpowiedzi jest za mało poprawna winksmiley.jpg
pytam o to czy się da zrobić to za pomocą Zend_DB_Table jeszcze raz podkreślam
Go to the top of the page
+Quote Post
kosmowariat
post
Post #5





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

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


korzystasz z obiektu Zend_Db_Select (w manualu opisanych jest kilka metod jak go dostać) Zajmijmy się teraz Twoim zapytaniem
  1. SELECT (jakies dane) FROM tab1 T1 JOIN tab2 T2 ON T1.id = T2.fk1

Zakładam że masz już obiekt $select który jest instancją w/w klasy

  1. <?php
  2. $select->from(array('T1'=> 'tab1',array('nazwy_kolumn'));
  3. //nakładasz alias 'T1' na tebele 'tab1' - przekazujesz jako tablicę nazwy kolumn - jeśli przekażesz pustą tablicę
  4. //to nie pobierze żadnej kolumny (przydaje się przy joinach), jeśli chcesz nałożyć aliasy na kolumny to tablicę z nazwami kolumn deklar
    ujesz jako tablicę asocjacyjną gdzie klucz to alias kolumny a wartość to jej fakt
    yczna nazwa array('alias' => 'kolumna')
  5.  
  6. $select->join(array('T2' => 'tab2'), 'T1.id = T2.fk1', array('nazwy_kolumn'));
  7. //pierwsza wartość analogicznie jak przy klauzuli from druga to jest jakby definic
    ja ON trzecia tablica analogicznie jak 2 parametr przy FROM
  8.  
  9. $select->__toString();
  10. //pokaże utworzony sql
  11.  
  12. //no i wykonujesz zapytanie
  13. ?>


SMACZNEGO

Ten post edytował kosmowariat 15.08.2007, 15:30:37
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: 22.08.2025 - 10:08