@Gecco
Nie będę pisał czegoś co już jest napisane
http://propel.phpdb.org/trac/wiki/Users/Do...n/1.2/BasicCRUDTu masz przykład wykorzystania tego w ORM, tylko że on daje o wiele więcej.
Mała kopia z powyższego linku:
<?php
// 1) Fetch an object by primary key
$myBook = BookPeer::retrieveByPK(1);
// 2) update the values & save() it.
$myBook ->setTitle("War & Peace");
$myBook->save();
?>
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:
<?php
$c = new Criteria();
$cton1 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo");
$cton2 = $c->getNewCriterion(AuthorPeer
::LAST_NAME, array("Tolstoy", "Dostoevsky", "Bakhtin"), Criteria
::IN);
// combine them
$cton1->addOr($cton2);
// add to Criteria
$c->add($cton1);
?>
co odpowiada
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.