【发布时间】:2011-01-26 01:32:30
【问题描述】:
我刚刚开始使用 CakePHP,所以我是一个在这个框架中工作的完整新手,并且已经使用了一个具有非常糟糕的数据库结构的遗留系统。我进去并将主键添加到没有它们的表中。但是,我找不到有关在模型中映射列的位置的信息,并且可以使用一些链接,以便我可以在该区域中定位。我从他们的用户表开始,它被命名为“系统”。我创建了一个名为 User 的模型:
class User extends AppModel {
var $name = 'User';
var $useTable = 'system';
}
我想在不更改现有数据库的情况下将列映射到更符合约定的属性名称,因为它们当前正在使用该表。表结构为:
Table: system
Field Name DataType Nullable Default
------------------------------------------------------------------
user_id tinyint(4) No None AUTO_INCREMENT
s_rec_type tinyint(4) Yes NULL
s_user_id varchar(20) Yes NULL
s_init char(2) Yes NULL
s_password varchar(12) Yes NULL
admin_access tinyint(4) No 0
fname varchar(50) No
lname varchar(50) No
email_address varchar(50) Yes NULL
created datetime Yes NULL
modified datetime Yes NULL
// I added email_address, created, and modified.
我想将模型中的列映射如下:
user_id -> Id
s_rec_type -> UserType
s_user_id -> UserName
s_init -> Initials
s_password -> Password
admin_access -> AdminAccess
fname -> FirstName
lname -> LastName
email_address -> EmailAddress
created -> Created
modified -> Modified
这样我就可以使用 $this->User->findAllById($id) 或 $this->User->findByInitials('sb') 之类的方法或通过 $this->User->id 访问 id而不是像 $this->User->user_id 这样的东西,并且使用更易于理解的代码与命名约定更加一致。
此表还将用于确定用户可以访问哪些菜单选项以及用户可以访问哪些页面。我稍后会处理。
【问题讨论】:
-
阅读更多有关 cakephp 约定的信息,表格应始终使用下划线,而不是像您所拥有的驼峰式.. 姓氏,而不是姓氏
标签: cakephp