如何更改模型中的值?

时间:2014-01-29 08:27:15

标签: cakephp

有没有办法根据数据库值更改数据库值? 例如,在我的数据库中,我希望将值0和1替换为非活动,活动。

我可以在控制器或视图中执行此操作,但有没有办法在模型中执行此操作,因此我在使用时获取所有数据,例如$ this-&gt; Model-&gt; find(“all”)?< / p>

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

正如Martin Bean在评论中所说,帮助者将是适当的地方。我怀疑你总是想要将find的结果转换为字符串。布尔值通常也用在复选框或单选按钮中,因此当您写入数据库时​​,您必须将其转换回来。

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

然后只需:

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

请注意,辅助方法还将确保字符串已翻译。