Im не пытается сделать это в с Kohana ORM, но не знаю, как это сделать:Как выбрать, где - если - с Kohana ORM?
SELECT t.name
FROM t
WHERE IF(t.s1_id = 1, t.s2_id IN (2,3,4), t.s1_id IN (2,3,4))
Im не пытается сделать это в с Kohana ORM, но не знаю, как это сделать:Как выбрать, где - если - с Kohana ORM?
SELECT t.name
FROM t
WHERE IF(t.s1_id = 1, t.s2_id IN (2,3,4), t.s1_id IN (2,3,4))
Я не работал с этим сам, но с преобразованием floww, в это должно сделать трюк
$model = ORM::factory('t')->and_where_open()
->where('s1_id', '=', '1')
->where('s2_id', 'IN', array(2,3,4))
->and_where_close()
->or_where('s1_id', 'IN', array(2, 3, 4));
Если вы ожидаете одного результата, используйте $model->find()
сейчас, и вы можете получить доступ к имени через $model->name
.
Если вы ожидаете несколько результатов, используйте $model->find_all()
и перебрать его, получая все ->name
сек
Как вы можете видеть в API browser, ORM не поддерживает IF
заявления. Если вы не хотите, чтобы жестко закодированное решение, подобное опубликованному, я думаю, вам придется добавить эту функцию самостоятельно.
Попробуйте это:
SELECT t.name FROM t WHERE (t.s1_id = 1 and t.s2_id IN (2,3,4)) or (t.s1_id IN (2,3,4))