我的模型关系如下:CakePHP的2.1 - 保存(和创造)多加入模型和相关模型
Student hasMany ClassStudent
Class hasMany ClassStudent
ClassStudent belongsTo Student
ClassStudent belongsTo Class
ClassStudent is a join model.
我想要做的就是创建学生(S),使用现有的类或创建新的,并创建一个链接学生和课程的连接模型记录。
我想在一次调用中完成这一切保存(如果这是可能的话)。
我曾尝试:
$data = array(
'Student' => array(
'0' => array(...), // Data in here
'1' => array(...),
...,
'n' => array(...)
),
'Class' => array(
'class_id' => x // The class that I want the above students to be associated with
)
)
我想要做的就是创建学生的N个记录,并将它们添加到一个类(可能在如果用户想添加一个新的同时创建一个类一)。我还希望在创建学生记录时为每个学生创建一个连接模型记录。
这可能吗?我正在使用Cake 2.1.0(今天的稳定版本),并且我用$ options ['deep'] = true尝试了不同类型的saveAll(saveAssociated和saveMany)。
有没有可能我的数据数组的格式不正确?
编辑: 我也曾尝试:
$data = array(
'ClassStudent' => array(
'0' => array(
'Student' => array (...), // Data
'Class' => array(id => x) // The id of the Class the Student should be associated to
...,
'n' => array(
'Student' => array(...), // n-th Student
'Class' => array(id => x)
)
);
$this->saveAll($data['ClassStudent'], array('deep' => true));
在上述情况下,成功地创造了学生表中的新学生档案,但在连接表中创建什么。
嘿瑞恩,感谢您的答复。我确实使用了链接的方法来一次保存一个连接模型,并且工作正常。但在那种情况下,我只做一个。 因此,不可能一次创建多个连接模型? – user1251202 2012-03-06 04:53:32
这实际上看起来更有趣。在阅读更多内容之后,似乎Cake文档可能会造成一些混淆。截至目前,似乎你只能保存一组关联的时间,在ClassStudent模型上调用saveAll – 2012-03-06 07:00:57
Hey Ryan,我试过上面的数据格式,它似乎没有工作。至于我的保存呼叫,不知道它是否重要,但在我的ClassStudent模型中,我有调用$ this-> saveAll($ data,array('deep'=> true))的函数(我曾尝试过并没有深)。然后在我的类控制器中,我调用方法为$ this-> Class-> ClassStudent-> saveClassStudents($ this-> request-> data)。 请注意,当我检查数据库时,没有新的记录。 – user1251202 2012-03-06 17:48:03