2015-09-21 57 views
0

我正在使用Yii2來創建應用程序。考慮一個模型A,該模型具有一個屬性,該屬性具有通過id對另一個模型B(兩個都具有數據庫表)的外部引用。當我填充模型A的視圖時,我需要顯示引用的對象B的屬性,它不是id。現在我在模型A中創建一個變量,在afterFind()期間通過查詢數據庫獲取與模型B相關的屬性來填充變量。有沒有更好的方法可以解決這個問題,而不需要使用afterFinds或更多的變量?你能提供一個例子嗎?Yii2引用表的加載屬性

+0

難道你不能像'$ modelA-> modelB-> modelBField'這樣做嗎? – Beowulfenator

回答

1

我認爲你的解決方案不是更好的方法。

你可以看看this tutorial for sample關於計算和相關領域。

基本上應執行這些步驟

1)設置基本模型

/* ActiveRelation */ 
public function getModelB() 
{ 
    return $this->hasOne(TableB::className(), ['id' => 'country_id']); 
} 

/* Getter for ModelB Field name */ 
public function getModelBField() { 
    return $this->modenB->name; 

}

2)如果有用設置搜索模型

3)Setup視圖文件

echo GridView::widget([ 
    'dataProvider' => $dataProvider, 
    'filterModel' => $searchModel, 
    'columns' => [ 
    ['class' => 'yii\grid\SerialColumn'], 
    'id', 
    'yuorField', 
    'modelBName', 
    ['class' => 'yii\grid\ActionColumn'], 
    ] 
]); 

查看樣本中的詳細信息以獲取完整說明