使用counterCache保存多行

时间:2015-05-19 08:19:32

标签: mysql database cakephp

我在cakePHP 2.6.4中遇到了counterCache的问题。 我需要将多行保存到bloggers_products表,我想为每个产品增加Bloggers.products_all。现在products_all总是增加一次。

BloggersProduct belongsTo Blogger
Blogger hasMany BloggersProduct 

BloggersProduct Model

'Blogger' => array(
        'className' => 'Blogger',
        'counterCache' => array(
            'products_all' => true,
            'reviews' => array('NOT' => array('BloggersProduct.review' => '0000-00-00'))
        )
        )

我试图在循环中使用saveMany保存数据。

        $i = 0;
        $save = [];
        $this->loadModel('BloggersProduct');
        foreach ($data as $product) {
//                $save = [];
//                $save['product_id'] = intval($product);
//                $save['blogger_id'] = $blogger_id;
//                $save['send_at'] = date('Y-m-d', time());
//               
//                $this->BloggersProduct->create();
//                $this->BloggersProduct->save($save, array('counterCache' => true));

            $save[$i]['product_id'] = intval($product);
            $save[$i]['blogger_id'] = $blogger_id;
            $save[$i]['send_at'] = date('Y-m-d', time());
            $i++;
        }

        debug($save);

        $res = $this->BloggersProduct->saveMany($save, array('counterCache' => true));

当我编辑或删除任何相关产品的计数器设置为真值时。

1 个答案:

答案 0 :(得分:0)

答案很简单:

$this->YourModel->cacheQueries = false;