0

我们正在考虑将 DataMapper ORM 添加到我们的 Code Igniter HMVC 设置中。

DataMapper 看起来很酷,但我注意到这些模型都与datamapper 文档中的has_one和Eg 紧密耦合:has_many

class User extends DataMapper {

    var $has_many = array('book');
    var $has_one = array('country');

........

class Country extends DataMapper {

    var $table = 'countries';

    var $has_many = array('user');

........

class Book extends DataMapper {

var $has_many = array('user');

正如我在开始时提到的,我们使用 HMVC 来处理模块化代码。这意味着我们可能有国家模块,和/或我们可能有书籍模块。但是它们是模块化的,因此用户模块(包括用户对象)不知道其他两个模块的存在,因此我们无法在模型中指定User有关其他两个模型的信息。

现在其他两个模型依赖于 users 模块,所以他们知道它存在,我在想的是在 Country 模型中我们可以附加book到 Userhas_many数组吗?

这是正确的方法吗?我想datamapper必须有办法处理这些用例?

4

1 回答 1

0

如果您无法在代码文件中提交关系,则可以使用Runtime relationship definition。这样,您可以在创建模型实例后设置关系,例如在您的 Books 模块中,当您获得 User 实例时,只需添加“您自己”(书籍)关系。

我不确定这种设置在您的情况下是否可行。您可能希望为此创建一些工厂类或方法,这样您就不必在控制器中乱扔设置代码。

于 2013-04-17T07:55:33.873 回答