0

我无法使用 Tree 行为保存记录。如果记录的 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_postsSET title='其他东西',key='其他东西',desc='',content='',parent_id= NULL,status='评论',image_count= 0,published='2013-02-03 17:39:00',created='2013-02 -03 17:42:00',updated='2013-02-03 17:47:00' 在哪里cgtagcms_posts. id='1'

问题是afterSaveTree 行为中的回调因此错误而失败。

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条件不对。为 设置了值left_id

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

4

1 回答 1

0

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

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

于 2013-02-04T20:43:52.510 回答