マーカーネット株式会社

WEB制作ブログ WEBデザイン、HTMLコーディング、PHP、スマートフォン制作などWEB制作全般に役立つ情報を発信していきます。

PHP

CakePHPのモデルの便利な機能について

投稿日:2014年9月5日 更新日:

CakePHPのモデルにあります便利な機能について紹介します。

– virtualFields
ブログのエントリーのテーブルがありまして、
カテゴリごとのエントリー数を取得する場合、
以下のfindを実行しますと、モデル名の配列に入りません。

$entry_ary = $this->Entry->find(“all”,
           array(“fields” => array(“Entry.category_id”,
           “Count(Entry.category) as count”),
           “group” => array(“Entry.category”)));

$entry_aryの中身は下のようになります。
array(
      (int) 0 => array(
           ‘Entry’ => array(
           ‘category’ => ‘1’
),
           (int) 0 => array( // [0]の中に設定されます。
           ‘count’ => ‘5’
)
),
     (int) 1 => array(
           ‘Entry’ => array(
           ‘category’ => ‘2’
),
           (int) 0 => array(
           ‘count’ => ‘1’
)
)
)

virtualFieldsを利用しますと、[Entry]中にcountが設定されます。
           $this->Entry->virtualFields[‘count’] = “COUNT(Entry.id)”;
           $entry_ary = $this->Entry->find(“all”,
           array(“fields” => array(“Entry.category_id”, “count”), “group” => array(“Entry.category_id”)));

$entry_aryの中身は下のようになります。
array(
           (int) 0 => array(
           ‘Entry’ => array(
           ‘category_id’ => ‘1’,
           ‘count’ => ‘5’
)
),
           (int) 1 => array(
           ‘Entry’ => array(
           ‘category_id’ => ‘2’,
           ‘count’ => ‘1’
)
)
)
– counterchache
ブログの各エントリーの閲覧者数など、
各レコードごとのhasManyの数を取得する場合、
「counterChache」の機能を利用しますととても便利です。

手順1.エントリーのテーブルに、閲覧者数用の列を追加します。
(閲覧履歴はLogというテーブルの場合、
「log_count」という列をエントリーのテーブルに追加します。

手順2. 閲覧者のログのテーブルにbelongsToの設定に「’counterCache’ => true」に追記します。
var $belongsTo = array(‘Entry’=> array(‘className’ => ‘Entry’,
           ‘foreignKey’ => ‘entry_id’,
           ‘exclusive’ => true,
           ‘counterCache’ => true));

以上の手順でエントリー(Entry)のモデルをfindしますと、
「log_count」に自動的に閲覧者数(hasManyの数)がカウントされます。

-PHP

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Google AnalyticsのPV数を取得するための準備について。

Google AnalyticsのPV数を取得するための準備について。

ウェブサイトのアクセス数をサイト内に表示させたい場合があるかと思います。 今回は直接Google AnalyticsのPV数を取得するまでの準備についてご紹介いたします。 1)Google Analy …

Google App EngineでPHP正式に利用可能

Google App EngineでPHP正式に利用可能

グーグルが提供するクラウドサービスGoogle App Engineでいままではユーザーを限定して利用可能でしたPHPが、10月8日から限定ユーザ以外の人も利用することが可能になりました。 https …

PHPの日付操作ライブラリについて

PHPの日付操作ライブラリについて

PHPで日付の操作を行うとき、PHPの標準の関数(date, mktime, strtotimeなど)を利用しますが、使い方に慣れるのがなかなか大変です。 そこでPHPで日付を操作するのに便利なライブ …

phpでオーディオファイルの情報を取得する方法

phpでオーディオファイルの情報を取得する方法

PHPで利用しまして、オーディオファイルの情報(再生時間、タイトルやアーティスト名など)を取得するには、getID3というライブラリを利用します。 以下このライブラリを利用した音楽ファイルの情報の取得 …

PHPフレームワークLaravel4を試しました。

PHPフレームワークLaravel4を試しました。

1. Laravel4をインストールするためには、Composerを利用します。 以下のコマンドでComposerをインストールします。 % curl -s http://getcomposer.or …