有沒有辦法根據數據庫值更改數據庫值? 例如在我的數據庫中,我想用非活動狀態替換值0和1。如何更改模型中的值?
我能做到這一點的控制器或看法,但有什麼辦法,所以我使用例如$這個 - >型號 - >找到(「ALL」)時,你得到的所有數據做這個模型?
有沒有辦法根據數據庫值更改數據庫值? 例如在我的數據庫中,我想用非活動狀態替換值0和1。如何更改模型中的值?
我能做到這一點的控制器或看法,但有什麼辦法,所以我使用例如$這個 - >型號 - >找到(「ALL」)時,你得到的所有數據做這個模型?
可以使用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;
}
I認爲你應該測試是否實際設置了$ result [$ this-> alias] ['active']'。並非所有對該模型的查詢都會保證返回而不是字段,並且您將生成警告並創建一個虛假未請求的值 –
正如馬丁豆在評論已經說了,一個幫手將是適當的位置。我懷疑你總是想將查找結果轉換爲字符串。布爾值通常也用在複選框或單選按鈕中,所以當您寫入數據庫時,您必須將其轉換回來。
public function boolToString($value) {
if ($value == 1) {
return __('Yes');
}
return __('No');
}
後來乾脆:
echo $this->MyHelper->boolToString($record['Model']['field']);
注意輔助方法也將確保字符串轉換。
你能舉一些例子來澄清你的問題嗎? – Anubhav
你可以創建一個視圖助手,然後將你的輸出包含在其中以產生「友好」名稱,即'$ this-> Boolean-> activeInactive($ data ['MyModel'] ['active']);' –