From 028668b7a63f464caff5b851dd489c5c0bc14fcc Mon Sep 17 00:00:00 2001 From: Mark Story Date: Sat, 13 Mar 2010 00:18:51 -0500 Subject: [PATCH] Adding condition for counterCache update keys. Fixes issues where counter cache wouldn't be updated. Fixes #450 --- cake/libs/model/model.php | 5 ++++- .../cases/libs/model/model_delete.test.php | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/cake/libs/model/model.php b/cake/libs/model/model.php index f38cf39b0..0950afdeb 100644 --- a/cake/libs/model/model.php +++ b/cake/libs/model/model.php @@ -1801,7 +1801,10 @@ class Model extends Overloadable { $this->id = $id; if (!empty($this->belongsTo)) { - $keys = $this->find('first', array('fields' => $this->__collectForeignKeys())); + $keys = $this->find('first', array( + 'fields' => $this->__collectForeignKeys(), + 'conditions' => array($this->alias . '.' . $this->primaryKey => $id) + )); } if ($db->delete($this)) { diff --git a/cake/tests/cases/libs/model/model_delete.test.php b/cake/tests/cases/libs/model/model_delete.test.php index e6c448548..fe69d9c95 100644 --- a/cake/tests/cases/libs/model/model_delete.test.php +++ b/cake/tests/cases/libs/model/model_delete.test.php @@ -255,6 +255,23 @@ class ModelDeleteTest extends BaseModelTest { $this->assertEqual($result, $expected); } +/** + * test that delete() updates the correct records counterCache() records. + * + * @return void + */ + function testDeleteUpdatingCounterCacheCorrectly() { + $this->loadFixtures('CounterCacheUser', 'CounterCachePost'); + $User =& new CounterCacheUser(); + + $User->Post->delete(3); + $result = $User->read(null, 301); + $this->assertEqual($result['User']['post_count'], 0); + + $result = $User->read(null, 66); + $this->assertEqual($result['User']['post_count'], 2); + } + /** * testDeleteAll method *