首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP树行为::recover() SQL错误

CakePHP树行为::recover() SQL错误
EN

Stack Overflow用户
提问于 2013-06-13 17:35:28
回答 1查看 465关注 0票数 0

因此,我尝试使用TreeBehavior的恢复方法,因为我认为我的一些数据已损坏。当我尝试这样做的时候,我得到了这个SQL错误:

错误: SQLSTATE42000:语法错误或访问冲突: 1064您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,了解要在第1行使用near ' AND‘的正确语法SQL Query: UPDATE fracmerl_dev.categories AS Category SET Category.lft = Category.lft + 4203其中Category.lft介于和之间

显然,查询缺少一些值。我还收到了这样的警告:

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

这是Cake版本2.3。

编辑:

TreeBehavior中的第865行是这段代码的最后一行:

代码语言:javascript
复制
        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行,这似乎很奇怪,但我已经仔细检查过了,这绝对是该行。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-17 22:19:11

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

代码语言:javascript
复制
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找到它想要找到的项目,以便继续对数据进行排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17083789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档