Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> lista obiektow
Gecco
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 4
Dołączył: 22.10.2006

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


problem prawodopodobnie jest prosty ale nigdzie nie moglem znalesc tego - pewnie zle szukam (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)

dopiero zaczynam z programowaniem obiektowy i dla mnie to troche abstrakcja

zalozmy ze mamy wyswietlic liste 10 ostatnich newsow. mam klase 'news' aby pobrac dane trzeba podac w konstruktorze id, ten z koleji ustawia wszystkie dane po koleji. problem jest taki zeby pobrac kazdego newsa a) musimy znac jego id (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) za kazdym razem wykonuje zapytanie mysql, wiec w sumie wykonujemy 11 zapytan wiec rozwiazanie jest do wiadomo czego (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif)

pytanie jak to napisac aby to bylo dobrze
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


@Gecco
Nie będę pisał czegoś co już jest napisane
http://propel.phpdb.org/trac/wiki/Users/Do...n/1.2/BasicCRUD
Tu masz przykład wykorzystania tego w ORM, tylko że on daje o wiele więcej.
Mała kopia z powyższego linku:
  1. <?php
  2. // 1) Fetch an object by primary key
  3.  
  4. $myBook = BookPeer::retrieveByPK(1);
  5.  
  6. // 2) update the values & save() it.
  7.  
  8. $myBook ->setTitle("War & Peace");
  9. $myBook->save();
  10. ?>

BookPeer to właśnie DAO, metoda retrieveByPK() pobiera jeden wiersz o zadanym kluczu głównym, oczywiście zwraca go jako obiekt AR czyli Book, metody set*() ustawiają wartości pól, get*() pobierają, save() zapisuje aktualny stan obiektu do bazy. W tym przypadku save() wywołuje update, ale jak stworzysz obiekt Book i nadasz mu wartości i dasz save() to wtedy wykona insert.
Co do pobierania wielu to masz metodę w BookPeer::doSelect( Criteria $c ), która zwraca array obiektów (choć lepiej było aby zwracało iterator, ale może w nowej wersji 1.3 to zmienili) Book, jak nie ma spełniających Criteria to zwraca pustą tablicę.
Co do Criteria, czyli warunków to znów kopię dam:
  1. <?php
  2. $c = new Criteria();
  3. $cton1 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo");
  4. $cton2 = $c->getNewCriterion(AuthorPeer::LAST_NAME, array("Tolstoy", "Dostoevsky", "Bakhtin"), Criteria::IN);
  5.  
  6. // combine them
  7. $cton1->addOr($cton2);
  8.  
  9. // add to Criteria
  10. $c->add($cton1);
  11. ?>

co odpowiada
  1. SELECT ... FROM author WHERE (author.FIRST_NAME = 'Leo' OR author.LAST_NAME IN ('Tolstoy', 'Dostoevsky', 'Bakhtin'));

i taki obiekt $c przekazujesz do BookPeer::doSelect() i ono wybiera te rekordy co spełniają te kryteria.
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: 3.10.2025 - 10:48