CakePHP 2.1-保存(和创建)多个连接模型和关联模型

CakePHP 2.1-保存(和创建)多个连接模型和关联模型,cakephp,Cakephp,我的模型关系如下: Student hasMany ClassStudent Class hasMany ClassStudent ClassStudent belongsTo Student ClassStudent belongsTo Class ClassStudent is a join model. 我要做的是创建学生、使用现有类或创建新类,并创建链接学生和类的联接模型记录 如果可能的话,我想在一次通话中完成这一切 我试过: $data = array( 'Student'

我的模型关系如下:

Student hasMany ClassStudent
Class hasMany ClassStudent
ClassStudent belongsTo Student
ClassStudent belongsTo Class
ClassStudent is a join model.
我要做的是创建学生、使用现有类或创建新类,并创建链接学生和类的联接模型记录

如果可能的话,我想在一次通话中完成这一切

我试过:

$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今天的稳定版本,我已经尝试了不同类型的saveAll saveAssociated和saveMany with$options['deep']=true

是否可能我的数据数组格式不正确

编辑: 我也尝试过:

$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));

在上述情况下,它成功地在students表中创建了新的Student记录,但在join表中没有创建任何记录。

saveAll saveAll是saveMany的包装器,saveAssociated是作业的正确工具。看一下的文档,我没有看到任何关于它在2.1中更改的注释。花了更多的时间阅读,下面是一些想法

首先,数组结构中是否有类型。你有

'Class'=>array'Class\u id'=>x 如果类已经定义,并且您只想添加一个学生,那么它将是

'ClassStudent'=>array'class\u id'=>x 话虽如此,CakesPHP ORM应该允许您在使用数字索引的hasMany上使用saveAll With,所以如果假设您有输入错误,下面的方法可能适合您

$data=数组 “学生”=>数组 “0”=>数组…,//这里有数据吗 “1”=>数组, ..., 'n'=>数组。。。 , 'ClassStudent'=>数组 'class_id'=>x//我希望上述学生与之关联的班级 $this->ClassStudent->saveAll$数据;
嘿,瑞安,谢谢你的回复。我确实使用了您链接的方法,一次保存一个联接模型,并且它起了作用。但在这种情况下,我只做了一个。所以不可能一次创建多个连接模型?这实际上比看起来更有趣。经过更多的阅读,似乎蛋糕文档可能会引起一些混乱。到目前为止,似乎一次只能保存一组关联,在ClassStudent模型上调用saveAll嘿Ryan,我尝试了上述数据格式,但似乎不起作用。至于我对save的调用,我不确定这是否重要,但在我的ClassStudent模型中,我有一个调用$this->saveAll$data的函数,数组'deep'=>true,我尝试过使用deep和不使用deep。然后在我的类控制器中,我调用方法$this->Class->ClassStudent->saveClassStudents$this->request->data。请注意,当我检查数据库时,没有新记录。我编辑了我的原始帖子,以显示我尝试的其他数据数组结构。