1

大家好。我这辈子似乎都无法让这个该死的saveall()功能发挥作用。我告诉过它很神奇,但我一定没有足够的中氯素或任何花哨的东西来让它闪闪发光。

所以我有四个不同的表——问题、评论、员工和答案。问题有很多答案,答案有一个评论。答案属于员工。这是我的模型中设置的内容:

答案模型

var $hasOne = array(
    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

var $belongsTo = array(
    'Question' => array(
        'className' => 'Question',
        'foreignKey' => 'question_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Employee' => array(
        'className' => 'Employee',
        'foreignKey' => 'employee_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

评论模型

var $validate = array(
    'answer_id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
        ),
    ),
);

var $belongsTo = array(
    'Answer' => array(
        'className' => 'Answer',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

当我运行saveall()我的数据时,我收到一条错误消息,指出我的评论的 answer_id 不是数字。这是我试图保存的数据树的设置(使用$this->Answer->saveall($this->data);

[Answer] => Array
        (
            [1] => Array
                (
                    [question_id] => 1
                    [employee_id] => 14
                    [result] => 7
                    [unique_hash] => t9279kn7vh
                )

            [3] => Array
                (
                    [question_id] => 3
                    [employee_id] => 14
                    [result] => 6
                    [unique_hash] => t9279kn7vh
                )

            [4] => Array
                (
                    [question_id] => 4
                    [employee_id] => 14
                    [result] => 3
                    [unique_hash] => t9279kn7vh
                )

            [5] => Array
                (
                    [question_id] => 5
                    [employee_id] => 14
                    [result] => 2
                    [unique_hash] => t9279kn7vh
                )

            [6] => Array
                (
                    [question_id] => 6
                    [employee_id] => 14
                    [result] => 7
                    [unique_hash] => t9279kn7vh
                )

        )

    [Comment] => Array
        (
            [1] => Array
                (
                    [user_id] => 14
                    [text] => test1
                )

            [3] => Array
                (
                    [user_id] => 14
                    [text] => test2
                )

            [4] => Array
                (
                    [user_id] => 14
                    [text] => test3
                )

            [5] => Array
                (
                    [user_id] => 14
                    [text] => test4
                )

            [6] => Array
                (
                    [user_id] => 14
                    [text] => test5
                )

        )

谁能帮我弄清楚这里出了什么问题?我很感激帮助。

编辑:我已经更新了 $data 数组,使其键从零开始,增量为一(即array(0=>array(),1=>array(),2=>array());等),这消除了验证错误,但数据仍然没有保存。

4

2 回答 2

1

试试这个:

$this->Answer->saveall($this->data['Answer']);
$this->Comment->saveall($this->data['Comment']);

由于某种原因,即使您定义了它们的关系,cakephp 有时也不会自动保存相关表的所有记录。我仍在试图找出原因。

于 2011-04-27T02:19:39.217 回答
1

SaveAll 只是不保存其他相关表。我们完全按照您说的做,我们自己定义它们,我们甚至手动链接 id。这有点痛苦,但它是最好的选择。

于 2011-04-28T06:46:04.110 回答