• ベストアンサー

CakePHPのfindの取得件数は?

ご存知の方は、お教えください。 CakePHPのfindの取得件数は、どのようにされておりますか? find('count',・・・)ですか? 取得されたデータの配列をcountするのは、間違っていますか? pg_num_rows のように、読み込み時に自動的に設定される変数(?)は無いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Modelの、getNumRowsで、データ件数が取得出来るようです。 実際には、Modelは、データソースっていう別のデータベースへのアダプタを使っていて、そのアダプタがもつ、lastNumRowsを読んでいるだけです。 で、Postgresのドライバを見てみると、(/cake/libs/model/datasources/dbo/dbo_postgres.php) lastNumRowsは、pg_num_rowsを呼んでました。 ですので、恐らく意図した通りの動作をしてくれるものと思います。 ただ、どうせ連装配列になったものを取得しているわけなので、countを使って配列の要素数を数えても同じことかなと思います。 余談ですが、PHP5から標準となったPDOというデータベースアクセス用のクラスでは、 pg_num_rowsのような取得要素数をカウントするメソッドを持ってなかったりします。 第三者が作成した、CakePHP1.3以上用のsqlite3を操作する為のデータソースでは(現状標準ではsqlite3はPDOでしか操作出来ない)、 一度取得したデータ全件をcount関数でカウントして変数に持たせて、lastNumRowsメソッドでソレを取得させるという手法をとってました。

関連するQ&A

専門家に質問してみよう