diff --git a/cake/libs/model/behaviors/tree.php b/cake/libs/model/behaviors/tree.php index 52d8c010f..ed94f9ee8 100644 --- a/cake/libs/model/behaviors/tree.php +++ b/cake/libs/model/behaviors/tree.php @@ -226,7 +226,7 @@ class TreeBehavior extends ModelBehavior { if ($id === null) { return $Model->find('count', array('conditions' => $scope)); - } elseif (isset($Model->data[$Model->alias][$left]) && isset($Model->data[$Model->alias][$right])) { + } elseif ($Model->id === $id && isset($Model->data[$Model->alias][$left]) && isset($Model->data[$Model->alias][$right])) { $data = $Model->data[$Model->alias]; } else { $data = $Model->find('first', array('conditions' => array($scope, $Model->escapeField() => $id), 'recursive' => $recursive)); @@ -717,7 +717,7 @@ class TreeBehavior extends ModelBehavior { $db =& ConnectionManager::getDataSource($Model->useDbConfig); $Model->updateAll( - array($parent => $db->value($node[$parent], $parent)), + array($parent => $db->value($node[$parent], $parent)), array($Model->escapeField($parent) => $node[$Model->primaryKey]) ); $this->__sync($Model, 1, '-', 'BETWEEN ' . ($node[$left] + 1) . ' AND ' . ($node[$right] - 1)); diff --git a/cake/tests/cases/libs/model/behaviors/tree.test.php b/cake/tests/cases/libs/model/behaviors/tree.test.php index 68e3c1dc7..65bf6efea 100644 --- a/cake/tests/cases/libs/model/behaviors/tree.test.php +++ b/cake/tests/cases/libs/model/behaviors/tree.test.php @@ -1112,6 +1112,11 @@ class NumberTreeTest extends CakeTestCase { $total = $this->Tree->childCount(); $this->assertEqual($total, 6); + + $this->Tree->read(null, $data[$modelClass]['id']); + $id = $this->Tree->field('id', array($modelClass . '.name' => '1.2')); + $total = $this->Tree->childCount($id); + $this->assertEqual($total, 2); } /**