ツリーの動作を使用してレコードを保存するのに問題があります。レコードの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ダンプは、この更新を履歴に表示します。
更新
cgtag
。cms_posts
SETtitle
='something else'、key
='somethingelse'、desc
=''、content
=''、parent_id
= NULL、status
='review'、image_count
= 0、published
= '2013-02-03 17:39:00'、created
= '2013-02 -03 17:42:00'、updated
=' 2013-02-0317:47:00'WHEREcgtag
。cms_posts
。id
= '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
。
これを修正する方法がわかりません。