문제 :CakePHP의 counterCache 여러 counterScope - 논리 문제
나는 두 가지 모델이 있습니다 판매점 Testdrive을 (Testdrive가 dealer_id를 통해 판매점에 속한다). 나는 딜러에 대한 실시간 통계를 보여주고 싶은 : 처리 총 (Testdrive.active = 1), (Testdrive.active = 1 & & Testdrive.processed = 1) ...
내가 약 100 개 딜러와 10000 testdrives이 . 카운트 기반 SQL은 약 10 초 (비효율적) 걸립니다. 이제는 매 시간마다 실행되는 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' => ''
),
);