Kohana 3.1 ORM: как сделать предложение «где ... в» - PullRequest
2 голосов
/ 13 апреля 2011

Благодаря превосходной документации Коханы, мне приходится прибегать к проституции на SO.;)

Надеюсь, это действительно просто: я пытаюсь собрать все истории, которые относятся к определенной группе идентификаторов.Мой код выглядит следующим образом:

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

Однако, это, очевидно, не работает.Я получаю сообщение об ошибке MySQL, поскольку в запросе в строке $story_ids помещаются одинарные кавычки.

EDIT: Я также пытался передать $story_ids в виде массива, но потом я просто получаю «500 Internal Server Error»

Можно ли сделать то, что я спрашиваю?

Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 01 мая 2011

Передача $ story_ids как массива должна работать.

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

Какую версию Kohana вы используете?

6 голосов
/ 13 апреля 2011

Возможно, вы забыли -> select () ?

Кроме того, здесь есть два способа здесь для использования ключевого слова 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 с тем, что вы делаете.

...