每套網站、系統幾乎不會只有一張table就可達成,就我所知啦。
通常都有多個table並設定關聯性,所以就會有所謂的PK, FK。而用gii產生的view也就是會把table的所有欄位都顯示出來。如果欄位是PK, FK當然就看到數字。如下圖Author欄位
可是如果我們想要顯示的是關聯後的欄位資料,像這樣 ↓ 要怎麼做呢?
先從model 找function
一旦table有設定關聯性,model裡找一下getXXX()
例:
public function getAuthor()
{
return $this->hasOne(Users::className(), ['user_id' => 'author_id']);
}
如果author欄位要顯示users的username欄位的值,則要先找前幾篇所提到的attributeLabels()裡的欄位
之前attributeLabels是改右方的值。這次,我們要來改左方的值。
將顯示的欄位,改成author.username。author對應到上面的func名稱
return [
'author_id' => 'Author',
];
改成
return [
'author.username' => 'Author',
];
而view類型的檔案也同樣改法(這時才能修改名稱)
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'author_id',
],
改成
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'author.username',
],
兩邊都改就顯示正常了,至少在index與view的部份是這樣。但在create與update時,由於方式不同就之後再說。
留言列表