Como adicionar numa tabela com (chave primária composta) de tres campos?

Galera, tenho uma tabela que possui "chave primária composta" usando três campos e não estou conseguindo salvar usando CActiveRecord.

Alguém já passou por isso?

Tentei sobrescrever o método safeAttributes no modelo e nada.

A chave primária composta usa "id_serie", "id_segmento" e "id_disc". O restante dos campos na tabela aceitam "NULL" como entrada.

Desta forma não funciona:




...

foreach ($arrIdDisc as $k => $idDisc) {

    $model = new GradeDiscSerie;

    $model->id_serie = $serie->id;

    $model->id_segmento = $serie->id_segmento;

    $model->id_disc = $idDisc;

    //CVarDumper::dump($model->attributes, 5, true); die;

   $model->save();

}



Já desta forma funciona:




...

foreach ($arrIdDisc as $k => $idDisc) {

    $sql = "INSERT INTO `grade_disc_serie` (id_serie, id_disc, id_segmento) VALUES

    ($serie->id, $idDisc, $serie->id_segmento)";

    Yii::app()->db->createCommand($sql)->execute();

}



Verifica se a propriedade errors ta retornando alguma coisa depois do save e retorna pra gente.

Vi o erro :D


array

(

    [discUso] => array

    (

        [0] => 'Disciplinas na grade não pode ser vazio.'

    )

)



"discUso" é um atributo "personalidado (que não pertence a tabela)" que adicionei no modelo para usar no form e ele é requerido na validação.

Vlw Daniel! Está funcionando perfeitamente!

disponha :)

Então agora ficou assim:




foreach ($arrIdDisc as $k => $idDisc) {

    $model = new GradeDiscSerie;

    $model->id_serie = $serie->id;

    $model->id_segmento = $serie->id_segmento;

    $model->id_disc = $idDisc;

    $model->discUso = $idDisc; // Somente para efeito de validacao

    $model->save();

}