【问题标题】:Yii get Model relation in CGridViewYii 在 CGridView 中获取模型关系
【发布时间】:2014-06-11 11:14:52
【问题描述】:

我有这样的网格视图

 <?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

【问题讨论】:

    标签: yii


    【解决方案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;
        }
            ),
    

    【讨论】:

      【解决方案2】:

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

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

      到

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

      然后您可以在 CGridView

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

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

      Solution

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多