0

私は、cortex ORM プラグインで fatfree フレームワークを使用しています。特定の基準に一致するレコードの数を取得しようとしています。私のコード:

$group_qry = new \models\system\UserGroup;
$group_qry->load(array('type=?',$name));
echo $group_qry->count(); //always returns 3, i.e total number of records in table

最初は、これはおそらくフィルタリングが機能しておらず、常にすべてを取得しているためだと考えていましたが、そうではありません。

while(!$group_qry->dry()){
    echo '<br/>'.$group_qry->type;
    $group_qry->next();
}

では、フィルタリング後に実際にロードされたレコード数を取得するにはどうすればよいでしょうか?

4

2 に答える 2

1

ええ、この部分は紛らわしいです:count()メソッドは実際にSELECT COUNT(*)ステートメントを実行します。メソッドと同じ引数を取るload()ので、あなたの場合:

$group_qry->count(array('type=?',$name));

SELECTパフォーマンスを低下させる2 番目の を実行するため、これはまさに必要なものではありません。

必要なのは、結果配列の行数を数えることです。UserGroupこの配列は保護された変数であるため、クラスで専用の関数を作成する必要があります。

class UserGroup extends \DB\SQL\Mapper {
  function countResults() {
    return count($this->query);
  }
}

このような単純な必要性に対して少しやり過ぎだと感じた場合は、フレームワークに処理を依頼するリクエストを提出できます。合理的な要求のように聞こえます。

アップデート:

これは現在、フレームワークの一部です。したがって、呼び出す$group_qry->loaded()と、ロードされたレコードの数が返されます。

于 2014-03-21T16:35:22.987 に答える