2014-01-29 45 views
-1

有沒有辦法根據數據庫值更改數據庫值? 例如在我的數據庫中,我想用非活動狀態替換值0和1。如何更改模型中的值?

我能做到這一點的控制器或看法,但有什麼辦法,所以我使用例如$這個 - >型號 - >找到(「ALL」)時,你得到的所有數據做這個模型?

+0

你能舉一些例子來澄清你的問題嗎? – Anubhav

+1

你可以創建一個視圖助手,然後將你的輸出包含在其中以產生「友好」名稱,即'$ this-> Boolean-> activeInactive($ data ['MyModel'] ['active']);' –

回答

0

可以使用after find方法

public function afterFind($results, $primary = false) { 

    foreach ($results as &$result) { 
     $result[$this->alias]['active'] = ($result[$this->alias]['active'] == 0) ? 'inactive' : 'active'; 
    } 

    return $results; 
} 
+0

I認爲你應該測試是否實際設置了$ result [$ this-> alias] ['active']'。並非所有對該模型的查詢都會保證返回而不是字段,並且您將生成警告並創建一個虛假未請求的值 –

0

正如馬丁豆在評論已經說了,一個幫手將是適當的位置。我懷疑你總是想將查找結果轉換爲字符串。布爾值通常也用在複選框或單選按鈕中,所以當您寫入數據庫時​​,您必須將其轉換回來。

public function boolToString($value) { 
    if ($value == 1) { 
     return __('Yes'); 
    } 
    return __('No'); 
} 

後來乾脆:

echo $this->MyHelper->boolToString($record['Model']['field']); 

注意輔助方法也將確保字符串轉換。