====== Criteria ====== **Criteria** - группа классов, позволяющих строить условия для инкапсулированных SQL запросов. **Criteria** - это набор классов, которые используются для инкапсуляции условий, которые используются в SQL запросах в зонах WHERE и HAVING. Все критерии наследуются от базового lmbSQLBaseCriteria, которые реализует необходимую функциональность по группировке и по парсингу критерий. ==== Структура Criteria ==== {{{:limb3_2007_2:ru:packages:dbal:limb_3_x_2007_2_dbal_criteria.png|:limb3_2007_2:ru:packages:dbal:limb_3_x_2007_2_dbal_criteria.png}}} ==== Список базовых классов ==== ^Критерий^Назначение^ |**lmbSQLRawCriteria**|Критерий, текст которого вставляется в запрос без парсинга и каких-либо изменений.| |[[lmbSQLFieldCriteria]]|Позволяет вставлять условия на какое-либо поле выборки.| |**lmbSQLTableFieldCriteria**|Аналогично lmbSQLFieldCriteria, только имя поля и имя таблицы нужно указывать явно.| |**SQLFielBetweenCriteria**|Позволяет вставлять BETWEEN условия для полей выборки.| |**lmbSQLFalseCriteria**|Критерий, который никогда не выполняется.| |**lmbSQLTrueCriteria**|Критерий, который всегда выполняется.| ==== Использование критерий ==== Критерии используются обычно совместно с потомками [[lmbFilteredQuery]], такими как [[lmbSelectQuery]], [[lmbUpdateQuery]] для добавления условий к %where% и %having%. Наиболее часто используется [[lmbSQLFieldCriteria]]: lmbSQLFieldCriteria('name', '%'.$name.'%', lmbSQLFieldCriteria :: LIKE); Различные критерии можно объединять, то есть строить более сложные, например: $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));