首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp counterCache multiple counterScope -逻辑问题

Cakephp counterCache multiple counterScope -逻辑问题
EN

Stack Overflow用户
提问于 2012-09-18 21:48:39
回答 1查看 1.5K关注 0票数 3

问题:

我有两个模型:经销商,测试驱动(测试驱动属于经销商通过dealer_id)。我想显示有关经销商的实时统计信息:总计(Testdrive.active = 1)、已处理(Testdrive.active =1 && Testdrive.processed = 1)……

我有大约100个经销商和10000个试驾。基于计数的sql大约需要10秒(低效)。现在我有一个每小时运行一次的cronjob,但我没有实时统计数据。

我尝试了这样的东西:

代码语言:javascript
复制
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数组吗?

代码语言:javascript
复制
 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' => ''
    ),
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-14 04:05:03

(现在)在the documentation中有一个这样的例子。应用于问题中的示例,将是:

代码语言:javascript
复制
class TestDrive extends AppModel {

    public $belongsTo = array(
        'Dealer' => array(
            'counterCache' => array(
                'active' => array(
                    'TestDrive.active' => 1
                ),
                'processed' => array(
                    'TestDrive.active' => 1, 
                    'TestDrive.processed' => 1
                )
            )
        )
    );
}

注意,没有必要使用默认值(classNameforeignKey等)来定义键。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12478371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档