CSort Feld auf M:N Beziehung hinzufügen

Hallo,

ich lasse mir in meinem Admin-Panel in der List() Methode alle Attribute aus meiner Relation ausgeben.

Anschließend übergebe die Kriterien an CSort

Code1




	$pages = new CPagination(xyz::model()->count($criteria));

	$pages->pageSize=self::PAGE_SIZE;

	$pages->applyLimit($criteria);


	$sort = new CSort('xyz');

	$sort->defaultOrder = 'id ASC';

	$sort->applyOrder($criteria);



Das funktioniert soweit, so gut.

Nun würde ich jedoch gerne eine weitere Spalte hinzufügen, in der die Anzahl der M:N Beziehungen angezeigt werden sollen. Diese soll aber auch sortierbar sein!

Bis jetzt löse ich das Problem (ohne das sortieren), auf eine sehr unschöne Weise

  • Ich führe findAll aus und übergebe, das Ergebnis an meine View



$models=xyz::model()->findAll($criteria);



Anschließend lasse ich eine foreach-Schleife im View laufen, die dann die Attribute der Relation ausgeben.

Im View rufe mittels einer mir geschriebenen Methode, die Anzahl der M:N Beziehungen auf




<td><?php echo xyz::model()->countRelations( $id ); ?></td>



Diese countRelations müsste ich irgendwie vorher aufrufen und dem CSort übergeben, jedoch weiß ich nicht, wie ich das bewerkstelligen soll.

Soweit ich weiss kann man an einen CSort irgendwelche Attribute hängen, es müssen nicht unbedingt die Attribute des Models sein. In der Criteria kannst du auch einen JOIN angeben und den ALIAS für den JOIN dabei festlegen. Im CSort gibst du dann sowas wie ‘<alias der gejointen Tabelle>.Id’ als Attribute an.

Wie hänge ich ein Attribut an?




$sort = new CSort();

$sort->attributes = array('<alias>.id')



http://www.yiiframework.com/doc/api/1.0.10/CSort#attributes-detail