如何在Kohana-ORM中使用BETWEEN子句

如何在Kohana-ORM中使用BETWEEN子句,kohana,kohana-3,kohana-orm,kohana-db,Kohana,Kohana 3,Kohana Orm,Kohana Db,我是科哈纳的新手。我使用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) 为此,我正在做以下工作

我是科哈纳的新手。我使用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)

有人能指出如何使用BETWEEN子句吗?我想你应该使用
或where('events.eventstart','BETWEEN',array($from,$to))
有关Kohana查询生成器的文档可在此处找到->

ORM使用查询生成器。

我发现可靠工作的唯一方法是使用
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));

尝试
或_where('events.eventstart','notbetween',数组($from,$to))可能值得在kohana论坛上询问和/或提交功能请求。