2013-02-04 87 views
0

我在使用树行为保存记录时遇到问题。如果记录的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转储在历史记录中显示此更新。

UPDATE cgtagcms_posts SET title = '别的东西',key = 'somethingelse',desc = '',content = '',parent_id = NULL,status = '审查',image_count = 0,published =“2013年2月3日17:39 :00',created ='2013-02-03 17:42:00',updated ='2013-02-03 17:47:00'WHERE cgtagcms_posts。 '1'

问题是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条件是错误的。有价值为left_id设置。

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

回答

0

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

表中的left_idright_id列不能为空字段。必须将缺省值设置为0

+0

根据文档,它们应该默认为null:http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html – Costa

相关问题