CakePHP保存了三个模型的关系关联

时间:2011-04-08 05:59:08

标签: cakephp save

我需要在数据库中插入以下输出:

Array
(
[Test] => Array
    (
    )

[Question] => Array
    (
        [0] => Array
            (
                [category_id] => 3
                [answer_style_id] => 2
                [Answer] => Array
                    (
                        [0] => Array
                            (
                                [capital_category_id] => 14
                                [correct] => 1
                            )

                       ...
         ...

简单地说,每个测试都有很多问题,每个问题都有很多答案,每个相关模型都有一个需要由Cake设置的外键(每个问题都有一个test_id,每个答案都有一个question_id)。

问题是当我$this->Test->saveAll($data);时,只会保存测试和问题,而不是答案。

如何使用Cake自动为每个关联模型设置外键来保存所有数据?

谢谢!

3 个答案:

答案 0 :(得分:5)

我不确定,但我认为保存第三级关系是不可能的。

来自Cakephp的

  

使用saveAll()保存相关数据   只会直接关联   模型。

您必须检索第三级数据并将其与它们区分开来。

答案 1 :(得分:4)

是的,你可以用CakePHP 2.1这种方式保存深层模型树

$this->SomeModel->saveAll($data, array('deep' => true));

此处参考> http://book.cakephp.org/2.0/en/appendices/new-features-in-cakephp-2-1.html#model-saveall-model-saveassociated-model-validateassociated

答案 2 :(得分:1)

我有三种型号A,B和C

a hasMany B B有许多C

$ A-> saveAll()将保存模型A& B但不是C

这是我使用的一个游戏:

模型B中的

覆盖afterSave之后

function afterSave($created) {
    if ($created) { // check if we are in save not update
        $this->data['B']['id'] = $this->id;
        $this->data['C'] = $this->data['B']['C'];
        $this->saveAll($this->data);
    }
}