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ダンプは、この更新を履歴に表示します。

更新cgtagcms_postsSET title='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'WHERE cgtagcms_postsid= '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

これを修正する方法がわかりません。

4

1 に答える 1

0

わかりました、私は問題を解決しました。

テーブルのleft_idおよびright_id列を null 許容フィールドにすることはできません。デフォルト値を に設定する必要があります0

于 2013-02-04T20:43:52.510 に答える