2011-11-12 13 views
1

アクティブなレコードクラスを使って最後のクエリを取得し、その一部を修正して、そのコードをcodeigniterでやり直すことはできますか?私はページ分割のために合計ページを取得しようとしています。私は直接クエリを書くことはできません。なぜなら、実行時にいくつかのforループやif文がページに送信されるフォームに応じて動的に作成されるからです。あなたが使用して最後のクエリを取得することができますcodeigniterの最後のクエリを変更してやり直してください

+0

重複した質問:@stackoverflow.com/questions/8093370/restarting-active-query-in-codeigniter – Repox

+0

@Repoxこれら2つの質問は、関連しているが異なるトピックをカバーしています。私はこれがあなたが言及している質問と重複しているとは思わない。 – yasar

+0

いずれの場合も、2つの質問は非常に関連しているように見えます。あなたが得た回答に応答しない理由は何ですか?いずれの質問でも? – Repox

答えて

0

あなたがあるため、全ページの倍のクエリを実行しますか?はいの場合は、SQLでSQL_CALC_FOUND_ROWSFOUND_ROWS()をチェックします。

$this->db->select("SQL_CALC_FOUND_ROwS id",false); 
$this->db->any_AR_function(....); 
$this->db->limit(...); 
$result = $this->db->get(); 

この後、あなたはこれを呼び出すことができます。

$this->db->select("FOUND_ROWS() as count",false); 
$count = $this->db->get(); 

が、私はこれがあなたが望むものであると思います。

+0

これは確かに私が求めていたものです。テーブルの名前を取得する必要がありますか? – yasar

+0

最新の呼び出し( 'FOUND_ROWS()as count')では必要ありません。最初のクエリ( 'any_AR_function')では、あなたはすべきです。 http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_foundrowsを参照してください。 – uzsolt

0

$last_query = $this->db->last_query(); 

あなたはこのクエリを変更してから行うことができます。

$query = $this->db->query($modified_query); 
foreach($query->result() as $row) 
{ 

} 
関連する問題