使用“语法错误或访问冲突”保存树行为失败

时间:2013-02-04 20:39:36

标签: php cakephp cakephp-2.3

我在使用树行为保存记录时遇到问题。如果更改了记录的parent_id,则保存将失败。

我的CmsPost模型看起来像这样。

class CmsPost extends CmsAppModel
{
    /**
     * Alias for the model.
     */
    public $name = 'CmsPost';

    /**
     *
     * @var array The behaviors for this model.
     */
    public $actsAs = array(
        'Tree' => array(
            'left' => 'left_id',
            'right' => 'right_id'
        )
    );
}

保存记录工作正常。 SQL转储在历史记录中显示此更新。

  

更新cgtagcms_posts设置title ='其他内容',key ='somethingelse',desc ='',{{1} } ='',content = NULL,parent_id ='review',status = 0,image_count ='2013-02-03 17:39:00', published ='2013-02-03 17:42:00',created ='2013-02-03 17:47:00'在哪里updatedcgtagcms_posts ='1'

问题是Tree行为中的id回调失败并出现此错误。

afterSave

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND' at line 1 SQL Query: UPDATE `cgtag`.`cms_posts` AS `CmsPost` SET `CmsPost`.`left_id` = `CmsPost`.`left_id` + 1 WHERE `CmsPost`.`left_id` BETWEEN AND 条件错误。 WHERE已设置值。

我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

好的,我解决了这个问题。

表格的left_idright_id列不能是可空字段。必须将默认值设置为0