user256430
user256430

Reputation: 3633

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

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-quotes 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.

Upvotes: 3

Views: 10155

Answers (2)

Kusmayadi
Kusmayadi

Reputation: 358

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?

Upvotes: 8

JoshuaDavid
JoshuaDavid

Reputation: 9519

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.

Upvotes: 6

Related Questions