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
cgtag
。cms_posts
SETtitle
= '别的东西',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'WHEREcgtag
。cms_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
设置。
我不知道如何解决这个问题。
根据文档,它们应该默认为null:http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html – Costa