2011-12-19 5 views

ответ

0

CI Active Record не поддерживает подзапросы изначально. Но вы можете включить subquery library like this one и использовать его. Я раньше не использовал эту библиотеку, поэтому это не проверено. Но этого должно быть достаточно, чтобы вы начали.

$this->db->select()->from('query')->group_by('id'); 
$sub = $this->subquery->start_subquery('select'); 
$sub->select()->from('index')->order_by('created_at', 'DESC'); 
$this->subquery->end_subquery('query'); 
+0

Если вопрос задан с помощью CodeIgniter 2.1, то эта библиотека не будет работать. Библиотека использует методы '_compile_select()' и 'get_compiled_select()', оба из которых недоступны в CI 2.1. 'compile_select()' защищен, а 'get_compiled_select()' не попадает в 2.1. – birderic

+0

@birderic - Хм, я не знал об этом. Тогда решение может быть в этом ответе: http://stackoverflow.com/a/6047554/844726 – swatkins

+0

Возможно, я ошибаюсь, но я безуспешно пытался скомпилировать внутренний запрос, используя методы, аналогичные описанным здесь: http: // heybigname.com/2009/09/18/using-code-igniters-active-record-class-to-create-subqueries/. Насколько я могу судить, в настоящее время нет возможности скомпилировать запрос без его фактического запуска. – birderic

Смежные вопросы