====== Criteria ====== Criteria is a group of classes that allows you to build complex conditions for SQL queries using nice OO interface. The initial conception was adopted from [[http://propel.phpdb.org|Propel]] and later was a bit simplified. ==== UML Static Structure ==== {{{ limb:architecture:limb3.0_dbal_criteria.png }}} ==== Criteria classes ==== All criteria classes are children of lmbSQLBaseCriteria class that implements basic functionality to allow a composition of criteria. ^Class name^Description^ |[[lmbSQLRawCriteria]]|Allows to insert a condition into SQL query as is.| |[[lmbSQLFieldCriteria]]|Allows to insert a condition on some field.| |[[lmbSQLTableFieldCriteria]]|A child class of lmbSQLFieldCriteria. Requeres explicit table name.| |[[SQLFielBetweenCriteria]]|Allows to insert between conditions into SQL query.| |[[lmbSQLFalseCriteria]]|Critetia that is never passed.| |[[lmbSQLTrueCriteria]]|Criteria that is always passed.| ==== Criteria usage ==== Criteria are commonly used with [[lmbSelectQuery]] class to insert conditions into %where% and %having% placeholders. Here is how [[lmbSQLFieldCriteria]] is used: $query->addCondition(newSQLFieldCriteria('name', '%'.$name.'%', lmbSQLFieldCriteria :: LIKE)); It's possible to combine criteria objects: $criteria = new lmbSQLTableFieldCriteria('ingredient.name', '%'.$name.'%', lmbSQLFieldCriteria :: LIKE); $new_criteria = new lmbSQLTableFieldCriteria('ingredient.name', '%'.$name.'%', lmbSQLFieldCriteria :: LIKE); $criteria->addOr($new_criteria); $criteria->addAnd(new SQLFielBetweenCriteria('value', 10, 20)); $query->addCondition($criteria);