代码点火器datamapper orm模型继承与相关对象

时间:2012-09-05 13:42:53

标签: codeigniter orm datamapper

我在Codeigniter 2.1.2中使用DataMapper ORM:

我有这种实体:

Person
-id             PRIMARY KEY
-name
-lastname
-age

Student
-person_id      PRIMARY KEY
-college
-notebook_color
-other attribute

Address
-id             PRIMARY KEY
-street
-number
-person_id

注意:学生没有自己的PK。它使用人的ID作为PK。

所以我的问题是。我想创建一个学生:

$student = new Student();
$student->get_by_person_id($id);

我希望$student获取person的所有数据,包括广告。我尝试使用include_related()来从person引入字段,但这并不会使对象相关。 我希望我的$student看起来像:

$student                  ->id
                          ->name
                          ->lastname
                          ->age
                          ->college
                          ->notebook_color
                          ->other_attribute
                          ->address (array)
                             [0]    -> id
                                    -> street
                                    -> number

                             [1]    -> id
                                    -> street
                                    -> number

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:2)

你不能拥有一个名为'person_id'的PK。 Datamapper要求所有PK都被称为'id'。 FK应该用他们的关系名称来调用,后缀为'_id'。所以地址中的FK应该被称为'student_id'。

此外,Datamapper不支持复合。因此无法合并Person和Student的记录。