Kohana 3 Auth ORM - 您可以使用不同的数据库架构吗?

时间:2013-11-07 16:40:35

标签: authentication orm kohana database-schema kohana-3

我正在将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';

我希望我已经清楚地解释了这一点,因为我意识到数据库架构非常不寻常。

希望有人能指出我正确的方向!

非常感谢,史蒂夫

1 个答案:

答案 0 :(得分:1)

Kohana的构建方式使您几乎可以覆盖“application”文件夹中的每个类,并且它将优先于模块中定义的类: http://kohanaframework.org/3.3/guide/kohana/files

根据您的情况,您应覆盖(不扩展)Model_User。为此,您需要在应用程序/ Model /文件夹中放置文件名User.php。它应该扩展Model_Auth_User类。

您可能需要重写一些类,但至少其中一些应该可以按原样使用。