每套網站、系統幾乎不會只有一張table就可達成,就我所知啦。

通常都有多個table並設定關聯性,所以就會有所謂的PK, FK。而用gii產生的view也就是會把table的所有欄位都顯示出來。如果欄位是PK, FK當然就看到數字。如下圖Author欄位

past  

可是如果我們想要顯示的是關聯後的欄位資料,像這樣 ↓ 要怎麼做呢?

 

good  

先從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時,由於方式不同就之後再說。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 jack4689 的頭像
    jack4689

    蔡阿志的部落格

    jack4689 發表在 痞客邦 留言(0) 人氣()