2012-06-10 27 views
2

我剛開始使用yii,但我並不陌生於php框架。但是現在,我堅持了這個問題:如何鏈接yii的數據

我有兩個Model /數據庫:

部: http://s7.directupload.net/images/120610/alemicys.png

員工: http://s1.directupload.net/images/120610/hxerdm8t.png

我只是想顯示實際此員工視圖中部門的名稱。因此,我不希望有「司法部」專欄中的「1」欄。

這是我的數據庫是這樣的: HTTP:// s1.directupload.net/images/120610/7wupindz.png

提前感謝! 約翰

+0

您是否已將它們連接到數據庫關係中? – Oliver

+0

我必須再次生成模型,如果我改變我的數據庫中的任何東西? –

+0

所以你有你的模型中的關係自動生成? –

回答

2

在員工網格視圖的columns屬性補充一點:

// this is in place of just 'departmentId', 
array( 
    'name'=>'departmentId', // name of the foreign key attribute 
    'value'=>'$data->department->name', // access the 'name' attribute of the related record through relation named 'department', the current record is represented by '$data' 
    'type'=>'raw' // data is of raw type 
), 

CDataColumn閱讀就知道如何修改上面的陣列。

注:由於您只要求顯示,上面的代碼將工作,如果你想爲這列的篩選工作,你就必須要麼

  1. 修改員工模型的搜索功能(或任何你正在進行搜索的地方)將輸入字符串映射到departmentId或
  2. 編寫一些JavaScript以將相關部門的ID發送到搜索,而不是字符串。

眼下的過濾器將只與DepartmentID的(即整數)沒有名字()工作。

你也可以做到這一點,而不是上面的代碼:

//again in place of departmentId 
'department.name' // using the 'department' relation, accessing its 'name' 

但隨後得到過濾器將是艱難的(你將不得不再次使用數組),和列標題也將成爲屬性標籤部門模型的名稱屬性。可以使用以下格式更改標題:'name:type:header',因此您可以執行以下操作:'department.name:Department'

大多數這些詳細信息都可以在我所包含的文檔鏈接中找到。

+0

謝謝,效果很好! –

+0

很高興幫助... –

+1

我已經添加了一些細節,這可能會幫助您更好地瞭解,並且還可以幫助未來的訪問者。 –