ユーザーが投稿を表示するたびに、カウントを追跡し、それをセッションに関連付けます。
SubmissionsController:
// Count view
if ($this->Session->check('viewed_submission_' . $submissionId) !== true) {
$clientIp = ip2long($this->request->clientIp());
$this->SubmissionsViews->countView($submissionId, $clientIp);
$this->Session->write('viewed_submission_' . $submissionId, true);
}
SubmissionsViews テーブルでそれらを追跡しています。
SubmissionsViews モデル:
class SubmissionsViews extends AppModel {
var $name = 'SubmissionsViews';
var $belongsTo = array(
'Submission' => array(
'className' => 'Submission'
)
);
public function countView($submissionId, $clientIp) {
$this->set('submission_id', $submissionId);
$this->set('user_ip', $clientIp);
$this->save($this->data);
}
}
私の SubmissionsView テーブルsubmissions_views
には次のフィールドがあります。
- ID
- submit_id
- user_ip
- 作成した
そのテーブルへの追加を追跡するように counterCache を設定しようとしていますが、設定方法がわかりません。$belongsTo
現在、Submission モデル内にcounterCache を追加しています。
class Submission extends AppModel {
var $belongsTo = array(
'User' => array(
'className' => 'User'
),
'SubmissionsViews' => array(
'counterCache' => true
)
);
しかし、見つからないと言っていますSubmission.submissions_views_id
。submissions
ドキュメントでは、というテーブルにフィールドを追加する必要があるということだけだったsubmissions_views_count
ので、これを機能させる方法がわかりませんか?