在我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()函數它按預期的方式顯示,但在網格視圖中相應地不顯示它。
謝謝
你是什麼意思的「不相應顯示」?錯誤的數據?空的?字符集? – Clyff
我在產品線表中有兩個internal_code fireld ...有兩個外鍵.. product_id和area_id ...例如,我可以將product_id設置爲1,用於productlines表中的5個不同列。這5個具有相同product_id的不同列將有不同的area_id。現在,當我顯示嘗試獲取internal_code時,它與area_id和product-id衝突,並混淆了內部代碼。 –