我需要在数据库中插入以下输出:
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自动为每个关联模型设置外键来保存所有数据?
谢谢!
答案 0 :(得分:5)
我不确定,但我认为保存第三级关系是不可能的。
来自Cakephp的:
使用saveAll()保存相关数据 只会直接关联 模型。
您必须检索第三级数据并将其与它们区分开来。
答案 1 :(得分:4)
是的,你可以用CakePHP 2.1这种方式保存深层模型树
$this->SomeModel->saveAll($data, array('deep' => true));
答案 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);
}
}