問題:
ディーラーとテストドライブの 2 つのモデルがあります (テストドライブは、dealer_id を通じてディーラーに属します)。ディーラーに関するリアルタイムの統計を表示したい: 合計 (Testdrive.active = 1)、処理済み (Testdrive.active = 1 && Testdrive.processed = 1) ...
私は約 100 のディーラーと 10000 のテストドライブを持っています。カウント ベースの SQL には約 10 秒かかります (非効率的)。現在、1 時間ごとに実行される cronjob がありますが、リアルタイムの統計情報はありません。
私はこのようなことを試しました:
var $belongsTo = array(
'Dealer' => array(
'className' => 'Dealer',
'foreignKey' => 'dealer_id',
'counterCache' => 'active',
'counterScope' => array('Testdrive.active' => 1),
'conditions' => '',
'fields' => '',
'order' => ''
),
'Dealer' => array(
'className' => 'Dealer',
'foreignKey' => 'dealer_id',
'counterCache' => 'processed',
'counterScope' => array('Testdrive.active' => 1, 'Testdrive.processed' => 1),
'conditions' => '',
'fields' => '',
'order' => ''
)
);
...しかし、belongsTo => 'Dealear' 値を上書きしました。
counterScope の配列を持つ counterCache の配列を持つことはできますか?
var $belongsTo = array(
'Dealer' => array(
'className' => 'Dealer',
'foreignKey' => 'dealer_id',
'counterCache' => array('active', 'processed'),
'counterScope' => array('active' => array('Testdrive.active' => 1), 'processed' => array('Testdrive.active' => 1, 'Testdrive.processed' => 1)),
'conditions' => '',
'fields' => '',
'order' => ''
),
);