Witam,

Jestem bardzo początkujący jeśli chodzi o Yii. Do poprawienia mam pewną aplikację, ale natknąłem się na problem nie do obejścia. Istnieje tabela product, category i products_category. W modelach Product i Category oczywiście istnieją odpowiednie relacje (MANY_MANY), gdyż jeden produkt może być przypisany do wielu kategorii i na odwrót.

Produkty wyświetlane są poprawnie, natomiast problem pojawia się w panelu administratora. Akcja Admin wyświetla listę produktów. Dotychczas produkt przypisany był do jednej kategorii i rozwiązane to było jednym polem 'category_id' w tabeli product.

Teraz przy wyświetlaniu produktów w kolumnie 'kategorie' muszę wyświetlić wszystkie kategorie, a nie tylko jedną. Na chwilę obecną wygląda to tak:

actionAdmin()
  1. public function actionAdmin()
  2. {
  3. $dataProvider=new CActiveDataProvider('Product', array(
  4. 'criteria'=>array(
  5. 'condition'=>'t.category_id=category.id',
  6. 'with'=>'category',
  7. 'order'=>'t.sort_order ASC, t.id DESC',
  8. 'together'=>true
  9. )
  10. ));
  11.  
  12. $this->render('admin',array(
  13. 'dataProvider'=>$dataProvider,
  14. ));
  15. }



widok admin.php:
  1. <?php $this->widget('zii.widgets.grid.CGridView', array(
  2. 'id'=>'product-grid',
  3. 'dataProvider'=>$dataProvider,
  4. 'columns'=>array(
  5. 'id',
  6. 'name',
  7. 'name'=>'image',
  8. 'type'=>'html',
  9. 'value'=>"CHtml::link(CHtml::image(Yii::app()->request->baseUrl.'/'.Product::IMAGES_PATH.'small/'.\$data->image, \$data->image), Yii::app()->request->baseUrl.'/'.Product::IMAGES_PATH.'big/'.\$data->image, array('class'=>'inline'))",
  10. //'filter'=>false,
  11. ),
  12. 'name'=>'category.name_pl',
  13. ),


W jaki sposób w polu 'value' dla kategorii wylistować wszystkie kategorie korzystając z widgetu CGridView?

Z góry dzięki za pomoc.