我正在将CodeIgniter应用程序迁移到Kohana,并希望尽可能利用Kohana的AUTH模块。我查看了AUTH模块使用的“标准”数据库模式,但是我已经有了包含命名和结构不同的相关信息的表和列。
是否可以通过扩展 Model_User 和/或 Kohana_Auth_ORM 来更改用户名/密码/电子邮件等的位置?我想尽可能使用ORM。
我想更改每个项目的表名和列名,以便我可以完全自定义它。
如果我被迫使用标准架构,这将降低我的应用程序的灵活性......
我有一个名为“entity”的表,其中存储了(例如用户,事件,文章)的基本细节。此表没有用户名/密码/电子邮件列,因为这些列不适用于事件或文章。用户名等的值存储在查找表中,该表以下面的示例方式映射数据(为简洁起见,将其缩减)。
Table: entity
Columns: entity_id
Table: map_entity_attribute
Columns: entity_id, attribute_id, value
Table: attribute
Columns: attribute_id, name
示例数据:
entity.entity_id = 99;
map_entity_attribute.entity_id = 99;
map_entity_attribute.attribute_id = 1;
map_entity_attribute.value = 'ThisIsMyUsername';
attribute.attribute_id = 1;
attribute.name = 'Username';
我希望我已经清楚地解释了这一点,因为我意识到数据库架构非常不寻常。
希望有人能指出我正确的方向!
非常感谢,史蒂夫
答案 0 :(得分:1)
Kohana的构建方式使您几乎可以覆盖“application”文件夹中的每个类,并且它将优先于模块中定义的类: http://kohanaframework.org/3.3/guide/kohana/files
根据您的情况,您应覆盖(不扩展)Model_User。为此,您需要在应用程序/ Model /文件夹中放置文件名User.php。它应该扩展Model_Auth_User类。
您可能需要重写一些类,但至少其中一些应该可以按原样使用。