使用 counterCache 保存多行
Saving multiple row with counterCache
我在 cakePHP 2.6.4 中遇到 counterCache 问题。
我需要将多行保存到 bloggers_products
table 并且我想为每个产品增加 Bloggers.products_all
。现在 products_all
总是递增一次。
BloggersProduct belongsTo Blogger
Blogger hasMany BloggersProduct
Bloggers产品型号
'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));
当我编辑或删除任何设置为真值的相关产品计数器时。
答案很简单:
$this->YourModel->cacheQueries = false;
我在 cakePHP 2.6.4 中遇到 counterCache 问题。
我需要将多行保存到 bloggers_products
table 并且我想为每个产品增加 Bloggers.products_all
。现在 products_all
总是递增一次。
BloggersProduct belongsTo Blogger
Blogger hasMany BloggersProduct
Bloggers产品型号
'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));
当我编辑或删除任何设置为真值的相关产品计数器时。
答案很简单:
$this->YourModel->cacheQueries = false;