0

在我的 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() 函数时,它按预期显示,但在网格视图中它没有相应显示。

谢谢

4

1 回答 1

0

问题可能是在 foreach 循环中调用了“return”语句。Gridview 列值返回一次。尝试内爆循环内的值或附加为字符串并在循环后返回内爆字符串。这可能是问题所在。

于 2016-08-02T12:11:42.790 回答