Yii2 foreach循环在网格视图中显示相同的数据

时间:2016-08-02 10:24:44

标签: gridview foreach yii2 yii2-basic-app yii2-model

在我的Yii2中,我有表格和关系设置。

表格列表:

  • 用户表 - >外键是:company_id。
  • Facility_table - >外键是:company_id。
  • Area_table - >外键是:facility_id。
  • productlinestable - >外键是:product_id和area_id
  • producttable - >有一个不同的外键..与这个问题无关。

现在我想向用户显示属于该用户的产品。我能够做到这一点。

Productlines表有一个名为internal_code的字段。我想在产品索引页面的area_d的基础上显示这个内部代码。

问题是,当我遍历数据并显示内部代码时,将获取第一个internal_code,而对于internal_code的其余部分,将显示相同的数据。

我的代码如下。

在我的 product.php 模型

 public function getFacilitiesID()
    {
        $ids = [];
        $facilityID = Facility::find()->where(['company_id' => \Yii::$app->user->identity->company_id])->all();

        foreach ($facilityID as $facID){
            $ids[] = $facID->facility_id;
        }

        return $ids;
    }

    public function getAreaID()
    {
        $ids = [];

        $areaID = Area::find()->where(['facility_id' => $this->getFacilitiesID()])->all();

        foreach ($areaID as $arID){
            $ids[] = $arID->area_id;
        }

        return $ids;
    }


     public function getInternalCode()
    {
        $ids = [];

        $internalCode = Productlines::find()->where(['area_id' => $this->getAreaID()])->all();
        foreach ($internalCode as $intCode){
            $ids[] = $intCode;

        }
        var_dump($ids); exit();
         return $ids;
    }
 public function listen()
    {
        $model = $this->getInternalCode();

      //  var_dump($mod->getIntern $mod->getInternalCode();
        $provider = new \yii\data\ArrayDataProvider([
            'allModels' => $model,
            'pagination' => [
                'pageSize' => 10,
                ],

        ]);
        return $provider->getModels();
    }

在索引页面网格视图中,我的代码是:

 [
        'label' => 'Internal Code',
        'format' => 'raw',
        'value' => function ($data) {
            $img ='';
            foreach ($data->listen() as $key){
               $img = $img.$key->internal_code;
            }
            return $img;
        } 


        ],

任何人都可以找到解决方案吗?

当我var_dump getInternalCode()函数时,它会按预期显示,但在网格视图中它不会相应显示。

谢谢

1 个答案:

答案 0 :(得分:0)

问题可能是"返回"在foreach循环中调用语句。 Gridview列值需要一次返回。尝试将循环内的值包含在内或作为字符串追加,并在循环后返回内爆字符串。这可能是问题所在。