0

我正在将 CodeIgniter 应用程序迁移到 Kohana,如果可能的话,我想利用 Kohana 的 AUTH 模块。我已经查看了 AUTH 模块使用的“标准”数据库模式,但是我已经有了包含相关信息的表和列,这些信息的命名和结构不同。

有没有办法通过扩展Model_User和/或Kohana_Auth_ORM来改变它在哪里寻找用户名/密码/电子邮件等?我想尽可能使用 ORM。

我想更改每个项目的表名和列名,以便我可以完全自定义它。

如果我被迫使用标准模式,这将降低我的应用程序的灵活性......

我有一张名为“实体”的表,其中存储了(例如用户、事件、文章)的基本详细信息。此表没有用户名/密码/电子邮件列,因为这些列不适用于事件或文章。用户名等的值存储在查找表中,该查找表以以下示例方式映射数据(为简洁起见)。

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';

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

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

非常感谢,史蒂夫

4

1 回答 1

1

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

具体到您的情况,您应该覆盖(而不是扩展)Model_User。为此,您需要在 application/Model/ 文件夹中放置一个文件名 User.php。它可能应该扩展 Model_Auth_User 类。

您可能必须重写一些类,但至少其中一些应该对您可用。

于 2013-11-17T18:28:04.620 回答