我有一個現有的PHP/MySQL應用程序,我想轉換爲CakePHP。 不幸的是,我不能改變列名,他們不遵循CakePHP標準。如何在將現有php應用程序移植到CakePHP時爲模型使用非標準表/列名稱?
例如: 表名之一被稱爲「用戶」,它不是複數。主鍵被稱爲「user_id」而不是「id」。創建日期被稱爲「生成」,而不是「創建」,等...
我希望有一種方法來定義CakePHP模型中表名和字段的別名,但我似乎無法找到它。 有什麼建議嗎?
我有一個現有的PHP/MySQL應用程序,我想轉換爲CakePHP。 不幸的是,我不能改變列名,他們不遵循CakePHP標準。如何在將現有php應用程序移植到CakePHP時爲模型使用非標準表/列名稱?
例如: 表名之一被稱爲「用戶」,它不是複數。主鍵被稱爲「user_id」而不是「id」。創建日期被稱爲「生成」,而不是「創建」,等...
我希望有一種方法來定義CakePHP模型中表名和字段的別名,但我似乎無法找到它。 有什麼建議嗎?
您可以更改與模型相關聯的表的名稱,以及主鍵:
class User extends AppModel {
var $table = 'User';
var $primaryKey = 'id';
}
至於「generated
」的事情,我還沒有找到一種方法來覆蓋CakePHP中的「created/modified
」默認值(除了直接訪問庫源並直接攻擊它)。你能夠添加列嗎?
是的,我可以添加列,我不希望你。今晚我會試試你的解決方案。感謝您的建議。 – 2009-06-08 21:45:47
關於「generated」,您可以使用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');
}
}
?>
有一個AliasBehavior但它有一定的侷限性(請參閱該文章的評論)。
除此之外,一些基本的定製是爲了:
據我所知,目前還沒有辦法告訴蛋糕您的創建的字段名爲生成,你可能只需要手動處理,可能在Model::beforeSave()。
CakePHP允許您指定任何不同於其推廣的標準約定的東西。作爲我的自暴自得的人,我可以推薦一本關於使用我編寫的CakePHP重構應用程序的書。
http://www.easyphpwebsites.com/books/v/Refactoring-Legacy-Applications-Using-CakePHP
便宜$ 13 PDF。
反正有定義別名嗎?我寧願在我的CakePHP應用程序中使用用戶標識而不是用戶標識。 – 2009-06-09 02:56:59