1

Kohana クエリ ビルダーを使用して、クエリを 1 つずつ作成することはできますか。

次に、上記のクエリでカウントを実行します。

次に、クエリ自体を実行します。

重複する条件文を書く必要はありません... 1つはカウント用、もう1つは結果用です...

追加する

DB::select(array('COUNT("pid")', 'mycount'))

メインクエリに対しては、1 つのレコードのみが返されます。

カウントを実行して、どうにかして削除することは可能でしょうか

array('COUNT("pid")', 'mycount')

セレクトから…

今のところ、私が考えることができる唯一の方法は、SQLコード自体を検索して置換し、そのコードSQLを実行することです...もっと良い方法があるはずです...願っています...

ありがとう!

4

2 に答える 2

2

それを行うために、私は3つの方法を使用します。最初のものはページ付けされた結果を返し、2番目のものはカウントを取得します。第三に、プライベートメソッドは、#1と#2で使用される一般的な条件を保持します。クエリでJOINやWHEREなどを使用する必要がある場合は、すべて#3に進みます。このように、クエリを繰り返す必要はありません。

/* 1 */
public function get_stuff($pagination = false){
    $query = DB::select(/* ... columns here ... */);
    $query = $this->get_stuff_query($query);
    if($pagination) $query->limit($pagination->items_per_page)->offset($pagination->offset);
    return $query->execute();
}

/* 2 */
public function get_stuff_count(){
    $query = DB::select(array('COUNT("id")', 'total_rows'));
    $query = $this->get_stuff_query($query);
    $result = $query->execute();
    return $result->get('total_rows',0);
}

/* 3 */
private function get_stuff_query($query){
    $query->from(/* tablename */);
    $query->join(/* ... */);
    $query->where(/* ... */);
    return $query;
}
于 2011-07-08T06:49:23.313 に答える
2

count_last_query()を使用する

// $db is a Database instance object
$count = $db->count_last_query();
于 2011-07-08T05:15:30.427 に答える