Ответ 1
Оператор не экранируется:
->where('col', 'IS NOT', NULL)
Не нужно использовать DB:: expr, Kohana уже поддерживает то, что вы хотите.
Возможно ли с помощью Kohana v3 Query Builder использовать оператор IS NOT NULL?
Метод where ($ column, $op, $value) требует всех трех параметров и даже если я укажу
->where('col', 'IS NOT NULL', '')
он строит и недействительный запрос, например.
SELECT * FROM table WHERE col IS NOT NULL '';
Оператор не экранируется:
->where('col', 'IS NOT', NULL)
Не нужно использовать DB:: expr, Kohana уже поддерживает то, что вы хотите.
Это работает с модулем ORM и немного меньше печатает.
->where('col', '!=', NULL);
Не уверен (это сейчас 3 часа), но ->where('col', '', DB::expr('IS NOT NULL'))
может работать.
Предложение WHERE принимает 3 аргумента, 1-й и 3-й, которые всегда пытались преобразовать в формат backticks (т.е. `table`.`field`). Пока вы поставляете DB:: Expr по крайней мере из 3-го аргумента, вы можете уйти, не оставляя ничего в 1-м и 2-м аргументах, и следующее должно работать:
->where('', '', DB::Expr('!isNull(col)'));
Это подтверждено для работы над Kohana 3.2 и выше.
Это должно работать:
->where('col', '=', NULL);