好的,我想通了。我通過創建classes/orm.php
延長了ORM驅動程序,它包含以下內容:
<?php defined('SYSPATH') or die('No direct access allowed.');
class ORM extends Kohana_ORM {
public function add_subquery($query) {
$this->_db_pending[] = array(
'name' => 'select',
'args' => array(DB::expr($query)),
);
return $this;
}
}
然後,在我的ORM電話,我做了以下內容:
$questions = ORM::factory('question')
->add_subquery('(SELECT COUNT(answer_id) FROM user_question_answers WHERE answer_question_id = question_id) as answer_count')
->where('question_user_id', '=', $this->current_user->id)
->find_all();
我還是搞清楚所有的插件和Kohana的出局,我很擔心,使用DB::expr()
可能造成這應該與用戶提交的數據使用的安全風險。但我不會用它從用戶任何東西,所以我確定現在。
如果有人有更好的解決方案,我會很樂意看到你將如何解決這個問題。
來源
2012-07-30 02:13:50
jdp
爲什麼你不想添加分開的計數查詢?緩存結果和下降緩存,當你有該用戶的新的答案。 – biakaveron 2012-08-05 10:29:14