Kohana 3.1 ORM:如何制作'where ... in'条款

时间:2011-04-13 00:04:49

标签: kohana-3 kohana-orm

感谢Kohana的出色文档,我不得不求助于自己。 ;)

希望这很简单:我正在尝试收集属于某组ID的所有故事。我的代码如下:

$story_ids = '(12,56,99,213,319)';
$stories = ORM::factory('story')->where('id', 'IN', $story_ids)->find_all();

但是,这显然不起作用。我收到MySQL错误,因为在查询中$story_ids字符串周围放置了单引号。

编辑:我也尝试将$story_ids作为数组传递,但之后我只得到了“500内部服务器错误”

有可能做我要问的事吗?

提前致谢。

2 个答案:

答案 0 :(得分:7)

将$ story_ids作为数组传递应该可行。

$story_ids = array(12,56,99,213,319);
$stories = ORM::factory('story')->where('id', 'IN', $story_ids)->find_all();

你使用什么Kohana版本?

答案 1 :(得分:6)

您是否忘记了 - > select()

此外,以下两种方式概述here使用“IN”关键字:

ORM::factory('table1')->select('mls_id')->where('mls_id', 'NOT IN', DB::Select('mls_id')->from('table2'))->find_all();
ORM::factory('table1')->select('mls_id')->where('mls_id', 'NOT IN', DB::Expr('(SELECT mls_id FROM table2)'))->find_all();

我通常使用DB :: Expr方法来处理你正在做的事情。