问题:
我有两个模型:经销商,测试驱动(测试驱动属于经销商通过dealer_id)。我想显示有关经销商的实时统计信息:总计(Testdrive.active = 1)、已处理(Testdrive.active =1 && Testdrive.processed = 1)……
我有大约100个经销商和10000个试驾。基于计数的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' => ''
),
);发布于 2013-03-14 04:05:03
(现在)在the documentation中有一个这样的例子。应用于问题中的示例,将是:
class TestDrive extends AppModel {
public $belongsTo = array(
'Dealer' => array(
'counterCache' => array(
'active' => array(
'TestDrive.active' => 1
),
'processed' => array(
'TestDrive.active' => 1,
'TestDrive.processed' => 1
)
)
)
);
}注意,没有必要使用默认值(className、foreignKey等)来定义键。
https://stackoverflow.com/questions/12478371
复制相似问题