2016-08-02 84 views
0

在我Yii2我有表和關係設置。Yii2在網格視圖foreach循環顯示相同的數據

表的列表:

  • 用戶表 - >外鍵是: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; 
     } 


     ], 

誰能findout什麼解決辦法嗎?

當我var_dump的getInternalCode()函數它按預期的方式顯示,但在網格視圖中相應地不顯示它。

謝謝

+0

你是什麼意思的「不相應顯示」?錯誤的數據?空的?字符集? – Clyff

+0

我在產品線表中有兩個internal_code fireld ...有兩個外鍵.. product_id和area_id ...例如,我可以將product_id設置爲1,用於productlines表中的5個不同列。這5個具有相同product_id的不同列將有不同的area_id。現在,當我顯示嘗試獲取internal_code時,它與area_id和product-id衝突,並混淆了內部代碼。 –

回答

0

問題可能是被稱爲foreach循環裏面的「回報」的聲明。 Gridview列值取一個返回值。嘗試imploding循環內的值或作爲字符串追加並在循環後返回內置的字符串。這可能是問題所在。

+0

不,我把我的回報聲明放在現在..沒有變化... –

+0

@MohanPrasad請根據您的新變化更新問題。 –

+0

我已添加我的更改 - @ ck_arjun –

相關問題