开发者

Kohana 3.1 ORM: How to make 'where ... in' clause

开发者 https://www.devze.com 2023-02-24 10:15 出处:网络
Thanks to Kohana\'s excellent documentation, I\'m having to resort to prostrate myself on SO. ;) Hopefully this is really simple: I\'m trying to gather all stories which belong to a certain group of

Thanks to Kohana's excellent documentation, I'm having to resort to prostrate myself on SO. ;)

Hopefully this is really simple: I'm trying to gather all stories which belong to a certain group of IDs. My code is as follows:

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

However, this is obviously not working. I'm getting a MySQL error because single-quot开发者_开发问答es are being put around the $story_ids string in the query.

EDIT: I've also tried passing $story_ids as an array, but then I just get a "500 Internal Server Error"

Is it possible to do what I'm asking?

Thanks in advance.


Passing $story_ids as an array should work.

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

What Kohana version do you use?


Did you perhaps forget the ->select() ?

Also, here are two ways outlined here to use the "IN" keyword:

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();

I typically use the DB::Expr method with what you're doing.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号