0

私はこのコードを持っています:

public function index($offset = 0) {
    $params = array(
        'stream' => 'companies',
        'namespace' => 'companies',
        'paginate' => 'yes',
        'pag_segment' => 3
    );

    // Build regular expression to match items from DB
    $regexp = "'^[" . strtolower($this->uri->segment(4)) . strtoupper($this->uri->segment(4)) . "]'";
    $params['where'] = "name REGEXP " . $regexp;

    $entries = $this->streams->entries->get_entries($params);

    $this->template->set('items', $entries)->build('index');
}

理由はわかりませんが、2 つのクエリが表示されます。以下の詳細を参照してください。

0.0008 SELECT default_companies.*、cb_users.id as created_by||user_id、cb_users.email as created_by||email、cb_users.username as created_by||username、profiles.display_name as created_by||display_name FROM default_companies LEFT JOIN default_users as cb_users ON cb_users .id=default_companies.created_by LEFT JOIN default_profiles をプロファイルとして on profiles.user_id=default_companies.created_by WHERE (name REGEXP '^[mM]') ORDER BY default_companies. created説明

このクエリは正しいものであり、有効なレコードを生成しますが...

0.0008 SELECT default_companies.*、cb_users.id as created_by||user_id、cb_users.email as created_by||email、cb_users.username as created_by||username、profiles.display_name as created_by||display_name FROM default_companies LEFT JOIN default_users as cb_users ON cb_users .id=default_companies.created_by LEFT JOIN default_profiles をプロファイルとして on profiles.user_id=default_companies.created_by WHERE (name REGEXP '^[mM]') ORDER BY default_companies. createdDESC LIMIT 10 オフセット 4

この 2 番目のクエリ (なぜ実行されたのかはまだわかりません) は値を返しませんOFFSET。これは、ビューが常に空であるというパラメーターのためです。ここで何が問題なのですか?私は何か見落としてますか?PyroCMS 2.2.1 Community を実行しています

4

1 に答える 1

3

最初のクエリは、system/cms/modules/streams_core/models/rows_m.php の 658 行目あたりで実行されます。これは、ストリーム テーブル内のすべてのレコードの合計を単純にカウントして、適切なページネーションを取得します。

しかし、なぜオフセットが4に設定されるのか、正確にはわかりません。欠落している場合は、0に設定する必要があります。

get_entries 関数の $params 配列に $offset パラメータを追加してみて、次に何が起こるかを確認してください。

于 2013-07-24T12:57:16.550 に答える