2011-01-25 86 views
3

我剛剛開始使用CakePHP,所以我是一個在這個框架中工作的完全新手,並且採用了一個具有非常糟糕的數據庫結構的遺留系統。我進去並添加了沒有它們的表的主鍵。但是,我無法找到有關在模型中映射列的位置的信息,並且可以使用一些鏈接,以便在此區域中定位。我從他們的用戶表開始,它已被命名爲「系統」。我創建了一個模型叫用戶:cakephp列映射

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 

,這樣我可以使用像$這個 - >用戶 - > findAllById方法($ ID )或$ this-> User-> findByInitials('sb')或者通過$ this-> User-> id訪問該id,而不是像$ this-> User-> user_id之類的東西,並且與使用代碼的命名約定更加一致更容易理解。

該表格還將用於確定用戶有權訪問哪些菜單選項以及用戶可以訪問哪些頁面。我會在稍後處理。

+0

瞭解CakePHP的約定一些,表格應始終強調沒有駝峯,你有..姓氏,沒有名字 – dogmatic69 2011-01-26 07:08:32

回答

3

我會看看virtual fields。你的模型屬性初始化可能是這樣的:

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

就是這樣,除了我最初有領域扭轉,這使我感到困惑,切換虛擬領域與我試圖取代的領域。與我的虛擬領域,默認的Auth魔術效果很好。 – stephenbayer 2011-01-25 19:21:55