gpt4 book ai didi

cakephp 列映射

转载 作者:行者123 更新时间:2023-12-02 21:17:57 24 4
gpt4 key购买 nike

我刚刚开始使用 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 之类的内容,并使用更易于理解的代码与命名约定更加一致。

此表还将用于确定用户可以访问哪些菜单选项以及用户可以访问哪些页面。我稍后会处理这个问题。

最佳答案

我会看一下 virtual fields 。您的模型属性初始化可能如下所示:

var virtualFields = array (
'UserType' => 's_rec_type',
'UserName' => 's_user_id',
'Initials' => 's_init',
.....
'Modified' => 'modified'
);

关于cakephp 列映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com