Yii nested relations (HasMany) im GridView

Tja einfaches Ding aber ich hab lange gesucht bis ich die Lösung hatte. Im nachhinein betrachtet ist das super simpel!

Ich hab in meinem aktuellen Projekt eine Recht komplexe HasMany Struktur und musste bei der Ausgabe alle Relationen auflösen und diese teilweise in GridViews anzeigen.

Ich Meine Damit sowas Model1 -> Has One Model2 -> Has Many Model 3 -> Has Many Model 4

Die beiden Has Many sind jeweils über Join Tables realisiert.

am ende hatte ich dann ein Konstrukt wie

(vereinfacht)

foreach($model->model2->relationsModel3 as $relation)

-> renderpartial(…. $relation);

 

im renderpartial dann das entsprechende Gridview für die relation zum Model 4

 

$this->widget('bootstrap.widgets.TbGridView', array(
    'dataProvider'=>new CArrayDataProvider($relation->relation_name_in_model3),
    'type'=>'striped bordered condensed',
    'template'=>"{items}",
    'columns'=>array(
        array(
            'header'=>'Something',
            'value'=>'$data->relation_name_in_join_table->attrib'
        ),
        array(
            'header' => Yii::t('app', 'Action'),
            'class' => 'bootstrap.widgets.TbButtonColumn',
            'template' => '{delete}',
        ),
    ),
));

Da unsere Relation ein Array ist können wir den CArrayDataProvider von Yii nutzen und ihn damit füttern sodass wir die Relation als dataProvider des GridViews nutzen können

Funzt 1a und ist echt einfach!

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.