RE: [PEAR-DEV] new package DB_Abstract/Easy/DataBuilder/DataGette r/?

From: Date: Tue, 14 Jan 2003 14:50:55 +0000
Subject: RE: [PEAR-DEV] new package DB_Abstract/Easy/DataBuilder/DataGette r/?
Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-12406@lists.php.net to get a copy of this message
Looks good to me ! +1 > for about almost a year now we are continuosly improving our package, > which we decided to contribute to pear now. > the package itself is based on PEAR::DB (optional MDB, would be minor > change) and it is a bit like the DB_DataObject > - only that the data are not really inside objects and > - that the query-building is more flexible, i believe. > - actually it is a query-builder and executer ... > we are building our applications always with this class and since then > (i dont remember that) we have written a single SQL-Query by hand, so > it seems quite flexible > > currently the class name is vp_DB, i thought it might be named > DB_Abstract/Easy/DataBuilder/DataGetter/???? (even though i > think better > names could be found) > > the class is capable of, manipulating the entire query incl > - where > - joins, left and right joins > - group > - order > and many more things > > methods are: get, getAll, getMultiple, update, save, add, remove, > getCount, setWhere, addWhere, getWhere, setJoin, addJoin, setLeftJoin, > addLeftJoin, setGroup, getGroup, setOrder, getOrder, setIndex, > getIndex, setSelect, getSelect and some more i guess ... > > short examples might demostrate some of what it does > > require_once 'vp/DB.php'; > > class contact extends vp_DB { > var $table = 'contact'; > var $primaryCol = 'id'; > } > $contact = new contact(); > > (1) > // get the contact with the id=7 > $data = $contact->get(7); > > > (2) > // reset all internal settings > $contact->reset(); > $contact->setWhere('name="Wolfram"'); > $contact->setOrder('name'); > // get the first 10 (LIMIT 0,10) > $contacts = $contact->getAll(0,10); > > (3) > // reset all internal settings > $contact->reset(); > $contact->addWhereSearch('name','Wolfram Kriesing'); > $contacts = $contact->getAll(0,10); > > (4) > // reset all internal settings > $contact->reset(); > $contact->addWhereSearch('name','Wolfram Kriesing'); > // select only the columns 'name' and 'surname' > $contact->setSelect('name,surname'); > $contact->setGroup('name'); // group by 'name' > // the number of contacts > $numContacts = $contact->getCount(); > $contacts = $contact->getAll(0,10); > > JOINS > > (5) > // join the table 'user' > // using the condition 'user.id=contact.user_id' > $contact->reset(); > $contact->setJoin('user','user.id=contact.user_id'); > $contacts = $contact->getAll(0,10); > > (6) > // the same as above, just that the class > // knows itself how to join the tables, > // by using a regular expression > $contact->reset(); > $contact->autoJoin('user'); > $contacts = $contact->getAll(0,10); > > > the queries would be: > (1) > SELECT * FROM contact WHERE id=7 > (2) > SELECT * FROM contact WHERE name="Wolfram" LIMIT 0,10 > (3) > SELECT * FROM contact WHERE name LIKE "%Wolfram%Kriesing%" LIMIT 0,10 > (4) > getCount: > SELECT count(*) FROM contact WHERE name LIKE "%Wolfram%Kriesing%" > GROUP BY name LIMIT 0,10 > getAll: > SELECT name,surname FROM contact WHERE name LIKE "%Wolfram%Kriesing%" > GROUP BY name LIMIT 0,10 > (5) (6) > SELECT * FROM contact,user WHERE user.id=contact.user_id > > > code is here, needs minor modification before it goes into pear > http://os.visionp.de/tmp/vp_DB/Common.php.txt > > > -- > Wolfram > > ... opensource @ vision:produktion ... > http://opensource.visionp.de > > ... translating template engine .... > http://sf.net/projects/simpletpl > > ... authentication system .... > http://sf.net/projects/auth > > > > > > > > -- > PEAR Development Mailing List (http://pear.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php >

« previous php.pear.dev (#12406) next »