Cactivedataprovider Und Relationen

Ich habe ein Formular Komponisten, in dem ich unterhalb des Formulars die Noten-Datensätze des angezeigten Komponisten mit Hilfe von CGridView anzeigen möchte.

Ich habe im Model Komponisten.php eine Relation definiert:


public function relations() {

   return array(

      'Werke'=>array(self::HAS_MANY, 'Noten', 'Komponist_Id'),

   );

}

Da ich für CGridView ein DataProvider Objekt brauche, habe ich in KomponistenController.php folgendes versucht:


public function actionUpdate($id) {

  $model = $this->loadModel($id);

  $noten = new CActiveDataProvider('Noten'); 

  ...

Es ist mir klar, dass ich so alle Noten, nicht nur die des angezeigten Komponisten bekomme.

Was muss ich beim Erzeugen des DataProvider Objekts mitgeben, so dass ich nur die Noten des im Formular angezeigten Komponisten bekomme. Mit anderen Worten: Wie kann ich die im Model definierte Relation für das Erzeugen des DataProviderObjekts benützen?

So einfach, wie ich es mir gedacht hätte, geht es eben leider nicht:


  $noten = new CActiveDataProvider('Werke');

Anmerkung: Ich hatte das Problem im Prinzip schon gelöst mit CArrayDataProvider - etwas umständlich. Ich denke, wenn ich schon mit ActiveRecords arbeite, dann geht es wahrscheinlich einfacher, aber wie … ?

Danke für jeden Tipp.

Konnte das Problem inzwischen selber lösen:

CActiveDataProvider Instanz erzeugen in KomponistenController.php:


public function actionUpdate($id) {

   $model = $this->loadModel($id);

   $noten = new CActiveDataProvider('Noten',array(

            'criteria'=>array(condition'=>'Komponist_Id='.$id

            )));



Habe viel zu kompliziert gedacht :blink: