CDbCriteria. Методы
addBetweenCondition()
addBetweenCondition(string $column, string $valueStart, string $valueEnd, string $operator='AND')
| |
---|---|
$column | имя столбца поиска |
$valueStart | начальное значение диапазона |
$valueEnd | конечное значение диапазона |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
Добавляет условие between (диапазон). Новое условие диапазон и имеющееся будут соединены определенным оператором, по умолчанию - оператор 'AND'. Если одно или оба значения пусты, то условие не будет добавлено к существующему. Данный метод обрабатывает случай, при котором существующее условие пусто. После вызова данного метода, свойство condition будет изменено
addColumnCondition()
addColumnCondition($columns,$columnOperator='AND',$operator='AND')
| |
---|---|
$columns | список имен слолбцов и сравниваемых значений (имя => значение) |
$columnOperator | оператор для соединения нескольких столбцов в условии сравнения. По умолчанию - 'AND' |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
Добавляет условие для сравнения переданного списка со значениями столбцов. Данное условие и имеющееся будут соединены определенным оператором, по умолчанию - оператор 'AND'. Условие генерируется сравнением каждого столбца соответствующему значению
addCondition()
addCondition(mixed $condition, string $operator='AND')
| |
---|---|
$condition | новое условие. Может быть либо строкой либо массивом строк |
$operator | оператор соединения отдельных условий. По умолчанию - 'AND' |
Добавляет условие к уже имеющемуся (condition).
Новое условие и имеющееся будут соединены определенным оператором, по умолчанию - это оператор 'AND'. Новое условие может быть массивом. В этом случае все элементы массива будут соединены оператором. Данный метод обрабатывает случай, когда существующее условие пусто. После вызова метода, свойство condition будет изменено
addInCondition()
addInCondition(string $column, array $values, string $operator='AND')
| |
---|---|
$column | имя столбца (или допустивое SQL-выражение) |
$values | список значений, среди которых должно быть значение столбца |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
Добавляет условие IN к уже имеющемуся (condition).
Условие IN и имеющееся будут соединены определенным оператором, по умолчанию - оператор 'AND'. Условие IN генерируется с использованием SQL-оператора IN, требующим, чтобы значение определенного столбца находилось в переданном списке значений
addNotInCondition()
addNotInCondition(string $column, array $values, string $operator='AND')
| |
---|---|
$column | имя столбца (или допустивое SQL-выражение) |
$values | список значений, среди которых НЕ должно быть значение столбца |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
Добавляет условие NOT IN к уже имеющемуся (condition).
Условие NOT IN и имеющееся будут соединены определенным оператором, по умолчанию - оператор 'AND'. Условие IN генерируется с использованием SQL-оператора IN, требующим, чтобы значение определенного столбца НЕ находилось в переданном списке значений
addSearchCondition()
addSearchCondition(string $column, string $keyword, boolean $escape=true, string $operator='AND', string $like='LIKE')
| |
---|---|
$column | имя столбца (или допустимое SQL-выражение) |
$keyword | слово для поиска. This interpretation of the keyword is affected by the next parameter. |
$escape | экранировать ли слово для поиска, если оно содержит символы % или _. Если данный параметр имеет значение true (dпо умолчанию), специальные символы % (обозначает 0 или более символов) и _ (обозначает 1 символ) будут экранированы, а слово для поиска будет окружено символом % с обоих концов. Если данный параметр имеет значение false, слово по умолчанию будет напрямую использоваться для поиска соответствий без каких-либо изменений. |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
$like | оператор LIKE. По умолчанию - 'LIKE'. Можно установить в значение 'NOT LIKE' |
Добавляет условие поиска к уже имеющемуся (condition).
Условие поиска и имеющееся будут соединены определенным оператором, по умолчанию - оператор 'AND'. Условие поиска генерируется с использованием SQL-оператора LIKE с переданным именем и словом для поиска
compare()
compare(string $column, mixed $value, boolean $partialMatch=false, string $operator='AND', boolean $escape=true)
| |
---|---|
$column | имя столбца для поиска |
$value | значение, с которым производится сравнение. Если значение является строкой, то будет выполнено интеллектуальное сравнение. Если значение - это массив, то производится точное сравнение по каждому элементу массива. Если параметр пуст, то существующее условие поиска не будет изменено |
$partialMatch | надо ли проверять значение на частичное совпадение (используя операторы LIKE и NOT LIKE). По умолчанию - false, т.е., проверяется точное совпадение |
$operator | оператор, используемый для соединения нового условия с имеющимся. По умолчанию - 'AND' |
$escape | должно ли значение экранироваться, если свойство $partialMatch уставнолено в значение true и значение содержит символы % или _. Если данный параметр установлен в значение true (по умолчанию), то специальные символы % (соответствует 0 или более символам) и _ (соответствует единственному символу) будут экранированы и значение будет окружено символами % с обеих сторон. Если данный параметр имеет значение false, то значение будет использовано для поиска соответствий напрямую без изменений |
Добавляет выражение сравнения к свойству condition.
Данный метод - это хелпер, добавляющий новое выражение сравнения к свойству condition.
Действие производится сравнением столбца с переданным значением с
использованием некоторого оператора сравнения.
Оператор сравнения определеляется интеллектуально на основе первых нескольких символов переданного значения.
В частности, распознаются следующие операторы, стоящие в начале переданного значения:
<
: значение столбца должно быть меньше переданного значения;: значение столбца должно быть больше переданного значения;
<=
: значение столбца должно быть меньше либо равно переданному значению;=
: значение столбца должно быть больше либо равно переданному значению;<>
: значение столбца не должно равняться переданному значению. Примечание: если параметр $partialMatch равен значению true, то значение не должно являться подстрокой значения столбца;=
: значение столбца должно равняться переданному значению;- ни один из вышеперечисленных: значение столбца должно равняться переданному значению. Примечание: если параметр $partialMatch равен значению true, то значение столбца должно быть таким же, как переданое значение или быть подстрокой переданного значения.
mergeWith()
mergeWith(mixed $criteria, boolean $useAnd=true)
| |
---|---|
$criteria | критерий, с котором производится слияние. Может быть массивом или объектом класса CDbCriteria |
$useAnd | использовать ли оператор 'AND' для слияния условий и их опций. Если значение равно false, то будет использоваться оператор 'OR'. По умолчанию - true |
Сливает критерий с другим. В основном, слияние делает результирующий критерий более ограничивающим. Например, если оба критерия имеют условия, вместе они будут слиты оператором 'AND'. Также, критерий, переданный в метод в качестве параметра, имеет преимущество в случае, когда пара опций не может быть слита (например, LIMIT, OFFSET)
toArray()
представление критерия в виде массива
Примеры
$criteria = new CDbCriteria();
$criteria->addBetweenCondition('price', '500', '1500');
$criteria->addColumnCondition(array('timecreate'=>'2012-05-25', 'state'=>'2'), 'OR')
$criteria->addCondition("user_id <= :userId OR user_id = '5'");
$criteria->addInCondition('id', array('1', '3', '5', '10', '16'), 'OR');
$criteria->addNotInCondition('id', array('8', '9', '12'));
$criteria->addSearchCondition('title', 'Example text', true, 'LIKE');
$criteria1 = new CDbCriteria();
$criteria1->condition = 'state=1';
$criteria->mergeWith($criteria1, 'OR');
спасибо..)
ОтветитьУдалитьрада стараться :)
УдалитьОтлично! спасибо :)
ОтветитьУдалить