0

所以我尝试使用 TreeBehavior 的恢复方法,因为我认为我的一些数据已损坏。尝试执行此操作时,我收到此 SQL 错误:

错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 SQL Query: UPDATE 的“AND”附近使用正确的语法fracmerl_devcategories原样。Category_ = 。+ 4203 在哪里。之间CategorylftCategorylftCategorylft

显然,查询缺少一些值。我也收到此警告:

注意 (8):未定义偏移量:0 [CORE/Cake/Model/Behavior/TreeBehavior.php,第 865 行]

这是蛋糕 2.3 版。

编辑:

TreeBehavior 中的第 865 行是此代码块中的最后一行:

        list($node) = array_values($Model->find('first', array(
        'conditions' => array($scope, $Model->escapeField() => $Model->id),
        'fields' => array($Model->primaryKey, $parent, $left, $right),
        'recursive' => $recursive
    ))); //THIS IS LINE 865

所以我假设的返回值array_values($Model->find...没有偏移量0。PHP 告诉我错误在该行而不是第 861 行似乎很奇怪,但我已经仔细检查过,这绝对是行。

谢谢

4

1 回答 1

0

AD7six 是对的,并且有一些干扰。我的模型中有一个beforeFind()回调,如下所示:

public function beforeFind($queryData){
    if ((!isset($queryData['exclude']) || $queryData['exclude']) && (empty($queryData['conditions']['Category.id']) || is_array($queryData['conditions']['Category.id']))){
        $queryData['conditions'][] = array('NOT' => array('Category.id' => $this->exclude));
    }
    return $queryData;
}

此回调阻止 TreeBehavior 找到它想要找到的项目以进行数据整理。

于 2013-07-17T14:19:11.453 回答