繁体   English   中英

在将现有的php应用程序移植到CakePHP时,如何为模型使用非标准的表/列名称?

[英]How do I use non-standard table / column names for the models while porting an existing php application to CakePHP?

我有一个想要转换为CakePHP的现有PHP / MySQL应用程序。 不幸的是,我无法更改列名,并且它们不符合CakePHP标准。

例如:表名称之一称为“用户”,而不是复数。 主键称为“ user_id”,而不是“ id”。 创建日期称为“生成”,而不是“创建”,等等。

我希望有一种方法可以为CakePHP模型中的表名和字段定义别名,但我似乎找不到。 有什么建议么?

您可以更改与模型关联的表的名称以及主键:

class User extends AppModel {
    var $table = 'User';
    var $primaryKey = 'id';
}

至于“ generated ”的东西,我还没有找到一种方法来覆盖CakePHP中的“ created/modified ”默认值(除了遍历库源代码并直接对其进行破解外)。 您可以添加列吗?

关于“已生成”,您可以使用诸如beforeSave之类的回调来插入/更新值。

<?php
class User extends AppModel {
    var $table = 'user';
    var $primaryKey = 'user_id'

    function beforeSave() {
        this->data['generated'] = date('Y-m-d H:i:s');
    }
}
?>

CakePHP允许您指定与其所倡导的标准约定不同的任何内容。 作为我的极端狂,我可以推荐一本书,涉及我使用CakePHP重构应用程序。

http://www.easyphpwebsites.com/books/v/Refactoring-Legacy-Applications-Using-CakePHP

便宜的$ 13 PDF。

有一个AliasBehavior,但有一定的限制(请参阅该文章的评论)。

除此之外,还需要进行一些基本的自定义:

据我所知,目前还没有办法告诉Cake您创建的字段称为generate ,您可能只需要手动处理即可,可能在Model :: beforeSave()中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM