1

こんにちは。私の人生では、この爆破されsaveall()た機能を機能させることはできないようです。私はそれが魔法だと言いましたが、火花を散らすのに必要なミディクロリアンやどんな派手なものも十分に持っていてはいけません。

したがって、質問、コメント、従業員、および回答という 4 つの異なるテーブルがあります。質問には多くの回答があり、回答には 1 つのコメントがあります。回答は従業員に属します。私のモデルで設定されているものは次のとおりです。

回答モデル

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 配列を更新して、キーがゼロから始まり、1 ずつ増加するようにしました (つまり、array(0=>array(),1=>array(),2=>array());など)。これにより、検証エラーはなくなりましたが、データはまだ保存されていません。

4

2 に答える 2

1

これを試してください:

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

何らかの理由で、ケーキphpは、関係を定義した場合でも、関連するテーブルのすべてのレコードを自動的に保存しない場合があります。私はまだその理由を理解しようとしています。

于 2011-04-27T02:19:39.217 に答える
1

SaveAll は、他の関連するテーブルを保存しません。私たちはあなたが言ったことを正確に行い、それらを自分で定義し、ID を手動でリンクします。ちょっと面倒ですが、それが最良の選択肢です。

于 2011-04-28T06:46:04.110 に答える