PCがあれば何でもできる!スマートフォン用の表示で見るPCがあれば何でもできる!へっぽこアラサープログラマーが、覚えたての知識を得意げにお届けしますこの広告は、90日以上更新していないブログに表示しています。PHPcounterCacheは、複数キーで結合するテーブルに適用できないCakePHPのcounterCacheの便利さに甘えてカウントを保存しようとしたところ、うまくいかない事案が発生。今回の対象のModelは複数キーでの紐付けが必要でした。イメージとしてはこのような感じです。falseとconditionsを使って結合したパターンです。これ、saveやdelete時にWarningが発生して、カウント処理も動きません。2162]lib/Cake/Model/Model.phpのupdateCounterCacheメソッドの処理を追うとわかりますが、結論としてはforeignKeyを元に更新を行うため、文字列でないfalseで怒られる上に、更新するレコードを認識できないという理由でした。一応、foreignKeyを空白文字列にすれば、Warningは回避できますが、カウントできないという結果は同じです。マイナス1)をしてくれるものだと思っていました。上記の件でソースを追ったところ、毎回全レコードからカウントクエリで取りなおすという、言ってみればシンプルなコードになっていました。レコード数が少ない場合はズレもなくていいのですが、数百万、億といったレコード数だったり、合わせて更新の頻度が多い場合は到底耐えられるものではありません。RDBの場合は素直にトリガを利用するのが安心かもしれません。将範フリーランス/エンジニア(主にサーバサイド、その他広く浅く)自宅の作業場は冷蔵庫の隣。キッチンエンジニアとして日々精進しています。(1)はてなブログをはじめよう!m_doi2さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。