Newsletter

Grupa MagazynyInternetowe

Online: 891

Wyszukiwarka

PHP

Propel - porady jak rozwiązać podstawowe problemy

Porada 3: Pobieranie tylko wybranych kolumn

Obiekty 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:

[+]
 
PHP
Pobierz
 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.

Porada 4: Konwersje toArray(), fromArray()

Metody toArray() oraz fromArray() pozwalają na konwersje obiektów w tablice i na odwrót.

W celu przekształcenia obiektu $student:

[+]
 
PHP
Pobierz
 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():

 
 
PHP
Pobierz
$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():

 
 
PHP
Pobierz
$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:

  • obiekty konwertować do XML-a (toArray(), XML_Serializer),
  • na podstawie danych XML tworzyć obiekty (XML_Unserializer, fromArray()).

Oto, jak przebiega konwersja obiektu na XML:

[+]
 
PHP
Pobierz
 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();

Porada 5: Wydawanie zapytań SQL

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:

[+]
 
PHP
Pobierz
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.

17 września 2008

Powiązane publikacje

Aplikacje internetowe framedb do Propela i DBD Designer

Aplikacje internetowe framedb do Propela i DBD Designer

Propel - operacje na plikach

Propel - operacje na plikach

 
Skomentuj
ten artykuł

Brak komentarzy

Kod obrazkowy
(Kliknij, aby zmienić)
 

Autor

Włodzimierz Gajda

Artykuły tego autora:

Załączniki

Newsletter

Jesli chcesz być na bieżąco z tym co się dzieje na stronie magazynu INTERNET Maker zapisz się do naszego newslettera.