Yii在CGridView中获取Model关系

时间:2014-06-11 11:14:52

标签: yii

我有像这样的网格视图

 <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id'=>'ingredient-grid',
    'dataProvider'=>$model->search(),
    'filter'=>$model,
    'columns'=>array(
        //'id',
        'barcode',
        'ingredient',
        'pantry',
        'catid',
        array(
            'class'=>'CButtonColumn',
        ),
    ),
)); ?>

我想要打印我的模型的最后关系

  return array(
        'cat' => array(self::BELONGS_TO, 'Categories', 'catid'),
        'memberingredients' => array(self::HAS_MANY, 'Memberingredients', 'ingredient_id'),
        'recipeingredients' => array(self::HAS_MANY, 'Recipeingredients', 'ingredient_id'),
        'ingredientmeasurement'=>array(self::HAS_MANY, 'IngredientMeasurement','ing_id'),
    );

我如何在网格视图中打印成分测量的最后一个关系,注意关系包含HAS_MANY

2 个答案:

答案 0 :(得分:1)

只要这样做就可以了:

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'ingredient-grid',
    'dataProvider' => $model->search(),
    'filter' => $model,
    'columns' => array(
        //'id',
        'barcode',
        'ingredient',
        'pantry',
        'catid',
        array(
            'name' => 'id',
            'type' => 'html',
            'value' => function($data) {
        $countRecipe = 0;
        $findMeasures = IngredientMeasurement::model()->findAllbyAttributes(array('ing_id' => $data->id));
        $myString = '';
        foreach ($findMeasures as $ms)
        $myString.=$value->name . ',';                
        $myString.=$value->relation->col(if need next relation) . ',';
        echo $myString;
    }
        ),

答案 1 :(得分:0)

如果两个表之间存在一对一的关系,那么首先要改变这个

'ingredientmeasurement'=>array(self::HAS_MANY, 'IngredientMeasurement','ing_id'),

'ingredientmeasurement'=>array(self::HAS_ONE, 'IngredientMeasurement','ing_id'),

然后您可以在 CGridView

中添加以下行
'columns'=>array(
        'ingredientmeasurement.columnName',
        'barcode',
        'ingredient',

否则如果它有很多关系,那么这个链接可能会为你提供答案

Solution