====== 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));