在多级关联表上保存多行 - Cake PHP

时间:2013-08-27 12:51:53

标签: php cakephp

我遇到了Cake PHP代码中的多级关联表。

我有以下型号

有很多学生和不同学生的监护人都有自己的学生。当我创建一个有2名学生的监护人时,必须为StudentFees表创建一个关联的2行。我在添加监护人时成功添加了2名学生,但我不知道如何为学生添加2行费用。我的代码如下。

    class Guardian extends AppModel {
    public $name = 'Guardian';

    public $recursive =2;
    public $hasMany = array(
            'Student' => array(
                'className'     => 'Student',
                'dependent'     => true
            )
    );

}
class Student extends AppModel {
    public $name = 'Student';

        public $hasMany = array(
            'StudentFee' => array(
                'className'     => 'StudentFee',
                'dependent'     => true
            )
    );
}
class StudentFee extends AppModel {
    public $name = 'StudentFee';
    public $belongsTo = array(
                    'Student' => array(
                    'className'     => 'Student',
                    'dependent'     => true
            )
    );
}

Pl帮助我保存studenFee的详细信息。我使用SaveAssociated函数来保存监护人和学生的详细信息。

3 个答案:

答案 0 :(得分:3)

如果我理解正确,这应该可以解决问题:

Model::saveAll()应该为您处理,并选择适当的方法saveManysaveAssociated。此外,它会自动设置您的foreignKeys,以便将所有内容整齐地插入到数据库中。

$this->Guardian->saveAll(array('Guardian' => array(
   [...],
   'Student' => array(
       0 => array(
          [here's your first Student],
          'StudentFee'  => array(
             0 => array(
                [here's your first StudentFee]
             )
          )
       )
    )
)));

答案 1 :(得分:0)

可以使用saveAllsaveAssociated方法。

答案 2 :(得分:0)

您可以尝试使用此方法,我总是在这种情况下使用:

$this->Studentfee->create();

$this->Studentfee->set(array(
'field1' => 'value',
'field2' => 'value'
));

 $this->Studentfee->save();

您可以为所有学生费用设置循环