You are on page 1of 1

Open-Source PHP5 MVC Framework

Agile Development

MODEL Criteria/Criterion/RS
COMPARATORS CRITERIA Criteria Class
To find records, use a Criteria object in conjunction with one of the Peer's methods:
getIterator ()
CRITERIA SQL getMap ()
doSelect(), doSelectOne(), doSelectJoinXXX() , doSelectJoinAll(), retrieveByPk()
EQUAL = clear ()
NOT_EQUAL <> GETTING A SPECIFIC RECORD retrieveByPk(<value | array>)
Peer method addAsColumn ($name, $clause)
ALT_NOT_EQUAL !=
SINGLE PRIMARY KEYS getAsColumns ()
GREATER_THAN > // gets the record with primary key = 3
LESS_THAN < getColumnForAs ($as)
$obj = BookPeer::retrieveByPK(3);
GREATER_EQUAL >= addAlias ($alias, $table)
LESS_EQUAL <= COMPOST PRIMARY KEYS getTableForAlias ($alias)
LIKE LIKE // gets the book_id=1,author_id=2 record
keys ()
NOT_LIKE NOT LIKE $obj = BookAuthorXrefPeer::retrieveByPK(array(1,2));
ILIKE ILIKE Note: the order of keys is critical and must correspond to the order in containsKey ($column)
NOT_ILIKE NOT ILIKE which the columns are defined in the XML (schema). setUseTransaction ($v)
CUSTOM CUSTOM isUseTransaction ()
GETTING ALL RECORDS doSelect(<empty criteria>)
DISTINCT DISTINCT Peer method getCriterion ($column)
IN IN $questions = QuestionPeer::doSelect(new Criteria()); getNewCriterion ($col, $val, $comp=null)
NOT_IN NOT IN
ALL ALL GETTING ONE RECORD doSelectOne(<object>) getColumnName ($name)
Peer method getTablesColumns ()
JOIN JOIN $c = new Criteria();
BINARY_AND & $c->add(UserPeer::NICKNAME, $nickname); getComparison ($key)
BINARY_OR | $user = UserPeer::doSelectOne($c); getDbName ()
ASC ASC setDbName ($dbName=null)
DESC DESC SPECIFYING CONDITIONS USING COMPARATORS add(<column>, <value>, <comparator>)
Criteria method getTableName ($name)
ISNULL IS NULL // default comparator: = // id <> 17
ISNOTNULL IS NOT NULL $c = new Criteria(); $c = new Criteria(); getValue ($name)
CURRENT_DATE CURRENT_DATE $c->add(TableNamePeer::ID, 17); $c->add(TableNamePeer::ID, 17, Criteria::NOT_EQUAL); get ($key)
CURRENT_TIME CURRENT_TIME $obj = TableNamePeer::doSelect($c); $obj = TableNamePeer::doSelect($c); put ($key, $value)
CURRENT_TIMESTAMP CURRENT_TIMESTAMP CUSTOM: putAll ($t)
LEFT_JOIN LEFT JOIN $c = new Criteria(); add ($p1, $value=null, $comparison=null)
RIGHT_JOIN RIGHT JOIN $c->add(tableNamePeer::RATING, "rating=rating +1", Criteria::CUSTOM);
INNER_JOIN INNER JOIN addJoin ($left, $right, $operator=null)
LIMIT THE NUMBER OF RECORDS RETURNED setLimit(<value>) getJoins ()
Criteria method
// first 5 results getJoinL ()
ResultSet (RS) Methods $c = new Criteria(); getJoinR ()
getResource() getCursorPos() $c->setLimit(5); setAll ()
setFetchmode() getRow() addAscendingOrderByColumn(<column>) setDistinct ()
getFetchmode() getRecordCount() ORDERING RECORDS addDescendingOrderByColumn(<column>)
// first 10 authors, alphabetically Criteria methods setIgnoreCase ($b)
isLowerAssocCase() close()
next() get() $c = new Criteria(); isIgnoreCase ()
previous() getArray() $c->setLimit(10); setSingleRecord ($b)
$c->addAscendingOrderByColumn(AuthorPeer::LAST_NAME); isSingleRecord ()
relative() getBoolean()
absolute() getBlob() CASE SENSITIVITY setIgnoreCase(<true|false>) setLimit ($limit)
Criteria method
seek() getClob() getLimit ()
// find all authors named "max", case-insensitive
first() getDate() setOffset ($offset)
$c = new Criteria();
last() getFloat() $c->add(AuthorPeer::FIRST_NAME, "max"); getOffset ()
beforeFirst() getInt() $c->setIgnoreCase(true); addSelectColumn ($name)
afterLast() getString()
addJoin(<column_T1>, <column_T2>, <LEFT_JOIN|RIGHT_JOIN|INNER_JOIN>) getSelectColumns ()
isAfterLast() getTime() JOINS
isBeforeFirst() getTimestamp()
Criteria method clearSelectColumns ()
$c = new Criteria(); getSelectModifiers ()
E.g. (criteria): $c->addJoin(UserPeer::ID, InterestPeer::USER_ID, Criteria::LEFT_JOIN);
$c = new Criteria(); addGroupByColumn ($groupBy)
$c->add(InterestPeer::QUESTION_ID, $this->getId());
$c->clearSelectColumns(); $obj = UserPeer::doSelect($c); addAscendingOrderByColumn ($name)
$c->addSelectColumn(userPeer::ID); clearSelectColumns() addDescendingOrderByColumn ($name)
$c->addSelectColumn(userPeer::USERNAME); RETURNING SPECIFIC COLUMNS addSelectColumn(<column>) getOrderByColumns ()
$c->add(userPeer::USERNAME, "${username}%", $c = new Criteria(); Criteria methods
Criteria::LIKE); clearOrderByColumns ()
$c->clearSelectColumns();
$c->setLimit(5); $c->addSelectColumn(userPeer::ID); clearGroupByColumns ()
$c->setIgnoreCase(true); $c->addSelectColumn(userPeer::USERNAME); getGroupByColumns ()
$rs = userPeer::doSelectRS($c); $c->add(userPeer::USERNAME, "${username}%", Criteria::LIKE); getHaving ()
while($rs->next()){ $c->setLimit(5);
$users[$rs->getInt(1)] = $rs->getString(2); remove ($key)
$c->setIgnoreCase(true);
} $rs = userPeer::doSelectRS($c); toString ()
E.g. (SQL): while($rs->next()){ $users[$rs->getInt(1)] = $rs->getString(2); } size ()
$con=Propel::getConnection(DATABASE_NAME); equals ($crit)
$sql="SELECT books.* FROM books WHERE NOT EXISTS ADD AN ALIAS TO COLUMN (AS clause) addAsColumn(<alias>, <ALIAS(TableNamePeer::ID>)
Criteria method addHaving (Criterion $having)
(SELECT id FROM review WHERE book_id = book.id)"; $c = new Criteria();
$stm = $con->createStatement(); addAnd ($p1, $p2=null, $p3=null)
$c->addAsColumn(”numUsers”, “COUNT(”.UserPeer::ID.”)”);
$rs=$stm->executeQuery($sql, ResultSet::FETCHMODE_NUM); addOr ($p1, $p2=null, $p3=null)

CRITERION USEFUL LINKS


SPECIFYING MULTIPLE CONDITIONS FOR A COLUMN getNewCriterion(<column>, <value>, <comparator>) http://propel.phpdb.org
Criteria method propel reference
$c = new Criteria(); addOr(<condition>)
$criterion = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo%", Criteria::LIKE); Criteria method http://creole.phpdb.org
$criterion->addOr($c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leonardo", Criteria::NOT_EQUAL)); addAnd(<condition>) creole reference
$c->add($criterion); Criteria method
http://propel.jondh.me.uk
COMBINING CRITERIA OBJECTS online tool for convert pseudo-SQL
combine Criterion objects in order to specify logical relationships between clauses to criteria
// Find all authors with first name "Leo" OR last name of "Tolstoy", "Dostoevsky", or "Bakhtin"
$c = new Criteria();
NOTE 1: Propel stores criteria in a
$cton1 = $c->getNewCriterion(AuthorPeer::FIRST_NAME, "Leo");
hashtable, for performance reasons.
$cton2 = $c->getNewCriterion(AuthorPeer::LAST_NAME, array("Tolstoy", "Dostoevsky", "Bakhtin"), Criteria::IN);
$cton1->addOr($cton2); // combine them NOTE 2: some of the examples came from
$c->add($cton1); // add to Criteria the Criteria Class Reference on the Propel
website.
http://andreiabohner.wordpress.com This cheat-sheet is not an official part of the symfony documentation

You might also like