2011-12-19 59 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 2011-12-19 16:13:49

+0

@birderic - 嗯,我沒有意識到這一點。然後解決方案可能會在這個答案:http://stackoverflow.com/a/6047554/844726 – swatkins 2011-12-19 16:27:39

+0

我可能是錯的,但我試圖編譯內部查詢使用類似於這裏描述的方法的內部查詢:http:// heybigname.com/2009/09/18/using-code-igniters-active-record-class-to-create-subqueries/。據我所知,目前沒有辦法編譯查詢,而無需實際運行查詢。 – birderic 2011-12-19 16:39:06