Grupa MagazynyInternetowe
Online: 891Obiekty tworzone na podstawie informacji zapisanych w bazie, np. metodą retrieveByPK(), pobierają z bazy danych wszystkie kolumny. To prowadzi do dużych nieoptymalności. Wyświetlenie tytułów artykułów (np. lista nowości na stronie) będzie powodowało pobieranie kompletnych artykułów.
Kolumny, które powinny być pobrane, możemy wskazać korzystając z metod klasy Criteria(). Utworzona poniżej tablica $studenci zawiera tylko imiona studentów:
1. $c = new Criteria(); 2. $c->clearSelectColumns(); 3. $c->addSelectColumn(StudentPeer::IMIE); 4. $rs = StudentPeer::doSelectRS($c); 5. $studenci = array(); 6. while($rs->next()) { 7. $tmp = array( 8. 'imie' => $rs->get(1), 9. ); 10. $studenci[] = $tmp; 11. }
Tak wygenerowane wyniki nie mogą być wykorzystane do operacji save() czy delete(), gdyż nie są obiektami, a stringami.
Kod zwracający wyłącznie wybrane kolumny dodajemy w postaci nowych metod do wygenerowanych klas. Metody te mogą przyjmować parametr klasy Criteria, który pozwoli na wskazywanie wybranych wierszy i sortowanie wyników.
Metody toArray() oraz fromArray() pozwalają na konwersje obiektów w tablice i na odwrót.
W celu przekształcenia obiektu $student:
1. $c = new Criteria(); 2. $c->clearSelectColumns(); 3. $c->addSelectColumn(StudentPeer::IMIE); 4. $rs = StudentPeer::doSelectRS($c); 5. $studenci = array(); 6. while($rs->next()) { 7. $tmp = array( 8. 'imie' => $rs->get(1), 9. ); 10. $studenci[] = $tmp; 11. }
w tablicę wywołujemy metodę toArray():
$student = StudentPeer::retrieveByPK(2);
Jeśli jako parametr podamy stałą TYPE_FIELDNAME, to indeksami tablicy będą nazwy kolumn w bazie danych.
Konwersję odwrotną realizuje metoda fromArray():
$t = $student->toArray(BasePeer::TYPE_FIELDNAME);
Metody toArray() oraz fromArray() możemy wykorzystać w połączeniu z klasami XML_Serializer oraz XML_Unserializer. W ten sposób możemy:
toArray(), XML_Serializer),
XML_Unserializer, fromArray()).
Oto, jak przebiega konwersja obiektu na XML:
1. $t = array( 2. 'imie' => 'Tomasz', 3. 'nazwisko' => 'Nijaki', 4. 'plec' => 'M', 5. 'wiek' => '33', 6. 'numerindeksu' => '00000000001', 7. 'kierunek' => 'marketing', 8. ); 9. 10. $s2 = new Student(); 11. $s2->fromArray($t, BasePeer::TYPE_FIELDNAME); 12. $s2->save();
Niekiedy zachodzi konieczność wykonania konkretnych zapytań SQL. W takiej sytuacji należy wykorzystać statyczną metodę getConnection(). Obiekt zwracany przez tę metodę pozwala na wysyłanie do serwera bazy danych zapytań w języku SQL:
1. $s = StudentPeer::retrieveByPK(1); 2. $t = $s->toArray(BasePeer::TYPE_FIELDNAME); 3. 4. $serializer = new XML_Serializer(); 5. $serializer->serialize($t); 6. 7. $wynik = $serializer->getSerializedData();
Podane wyżej zapytanie wyznacza wartość towaru zapisanego w bazie danych (tj. sumę iloczynów: liczba sztuk x cena jednostki). Wykonanie takiego zadania za pośrednictwem obiektów byłoby znacznie bardziej czasochłonne.
Powiązane publikacje
Brak komentarzy
Artykuły tego autora:
PHP zdobył przed laty popularność jako język skryptowy do tworzenia stron internetowych. Wzięła się ona z pewnością stąd, że jeszcze kilka lat temu nie było alternatywy dla szybkiego, prostego i dostosowanego do potrzeb WWW języka. Dziś jest inaczej. Prezentujemy języki i technologie, które również powstały z myślą o programowaniu webowym.
Polecamy:
Na skróty:
Magazyny Internetowe| Co za ile| Programy| Praca| Magazyn Internet| Internet Maker| Web Toster| ForumNasze serwisy: