Как использовать предложение BETWEEN в Kohana ORM
Я новичок в кохане. Я использую ORM для получения данных.
Я хочу построить запрос, в котором BETWEEN
пункт есть. как следует
SELECT `rooms`.* FROM `rooms` LEFT JOIN `events` ON (`rooms`.`id` = `events`.`room_id`)
WHERE `events`.`room_id` IS NULL
OR (`events`.`eventstart` NOT BETWEEN 1312210800 AND 1312218000)
для этого я делаю следующее
$rooms = $room->join('events', 'LEFT')
->on('rooms.id', '=', 'events.room_id')
->where('events.room_id', 'IS', NULL)
->and_where_open()
->or_where('events.eventstart' , 'NOT BETWEEN', $from)
->and_where_close()
->find_all();
Но я получаю запрос, как это
SELECT `rooms`.* FROM `rooms` LEFT JOIN `events` ON (`rooms`.`id` = `events`.`room_id`)
WHERE `events`.`room_id` IS NULL AND (`events`.`eventstart` NOT BETWEEN 1312210800)
Может кто-то указать, как использовать предложение между
2 ответа
Решение
Я думаю, что вы должны использовать or_where('events.eventstart', 'BETWEEN', array($from, $to));
Документацию по Kohana Query Builder можно найти здесь -> http://kohanaframework.org/3.2/guide/database/query/builder ORM использует Query Builder.
Единственный способ, который я нашел, который работает надежно, это использовать DB::expr()
,
Учтите следующее:
or_where('events.eventstart', 'NOT BETWEEN', DB::expr('1312210800 AND 1312218000'));
Или вы можете вставить все это в переменные:
$range = "{$from} AND {$to}";
or_where('events.eventstart', 'NOT BETWEEN', DB::expr($range));