我有现有的网站 并且我在不改变前端程序的情况下编写新的后端(在cakephp中)
感到不舒服 db表的字段名称为是否可以在cakephp模型文件中执行某些操作(重新标识字段名称)
所以我可以在控制器中使用模型作为
News.date
News.title
News.content
答案 0 :(得分:2)
您需要做的是在新闻模型中设置一些非常基本的virtual fields。这样的事情应该适合你的需要。
public $virtualFields = array(
'title' => 'news_title',
'date' => 'news_date',
'content' => 'news_content'
);
也可以通过查看可以帮助你的其他model attributes来帮助你,你需要将displayType设置为我想象的new_title。
答案 1 :(得分:1)
Dunhamzz说,virtualFields
是一个很好的解决方案,直到你想要使用这些新的字段名称。
由于我假设你的前端需要使用数据库中的旧名称,我会在你的模型中使用afterFind-callback。
假设你有模型news.php:
# /app/model/news.php
function afterFind($results) {
foreach ($results as $key => $val) {
if (isset($val['News']['title'])) {
$results[$key]['News']['news_title'] = $val['News']['title']);
# unset($results[$key]['News']['title']); //use this if you don't want the "new" fields in your array
}
if (isset($val['News']['date'])) {
$results[$key]['News']['news_date'] = $val['News']['date']);
# unset($results[$key]['News']['date']); //use this if you don't want the "new" fields in your array
}
if (isset($val['News']['content'])) {
$results[$key]['News']['news_content'] = $val['News']['content']);
# unset($results[$key]['News']['content']); //use this if you don't want the "new" fields in your array
}
}
return $results;
}
您需要将数据库字段重命名为新的所需值。然后,您可以在其他所有领域的条件下使用这些 唯一的区别是,你得到一个数组,其中所有的字段都被重命名为你的前端字段。
有关可用回调方法的详细信息,请查看此处:Callback Methods