I am new to kohana. I am using ORM for getting data.
我是kohana的新手。我正在使用ORM来获取数据。
I want to build a query in which BETWEEN
clause is there. as following
我想构建一个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)
for that i am doing the following
因为我正在做以下事情
$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();
But i am getting the the query like this
但我得到这样的查询
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)
Can someone point out how to use BETWEEN clause
有人可以指出如何使用BETWEEN子句
2 个解决方案
#1
8
I think you should use or_where('events.eventstart', 'BETWEEN', array($from, $to));
Documentation on Kohana Query Builder can be found here -> http://kohanaframework.org/3.2/guide/database/query/builder ORM uses Query Builder.
我认为你应该使用or_where('events.eventstart','BETWEEN',array($ from,$ to));可以在此处找到Kohana查询生成器的文档 - > http://kohanaframework.org/3.2/guide/database/query/builder ORM使用查询生成器。
#2
5
The only way I've found that works reliably is to use DB::expr()
.
我发现可靠工作的唯一方法是使用DB :: expr()。
Consider the following:
考虑以下:
or_where('events.eventstart', 'NOT BETWEEN', DB::expr('1312210800 AND 1312218000'));
Or you can stick it all in variables:
或者你可以把它全部放在变量中:
$range = "{$from} AND {$to}";
or_where('events.eventstart', 'NOT BETWEEN', DB::expr($range));
#1
8
I think you should use or_where('events.eventstart', 'BETWEEN', array($from, $to));
Documentation on Kohana Query Builder can be found here -> http://kohanaframework.org/3.2/guide/database/query/builder ORM uses Query Builder.
我认为你应该使用or_where('events.eventstart','BETWEEN',array($ from,$ to));可以在此处找到Kohana查询生成器的文档 - > http://kohanaframework.org/3.2/guide/database/query/builder ORM使用查询生成器。
#2
5
The only way I've found that works reliably is to use DB::expr()
.
我发现可靠工作的唯一方法是使用DB :: expr()。
Consider the following:
考虑以下:
or_where('events.eventstart', 'NOT BETWEEN', DB::expr('1312210800 AND 1312218000'));
Or you can stick it all in variables:
或者你可以把它全部放在变量中:
$range = "{$from} AND {$to}";
or_where('events.eventstart', 'NOT BETWEEN', DB::expr($range));