2

我正在使用 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。它使用 Person 的 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

我怎样才能让它工作?

4

1 回答 1

2

你不能有一个名为“person_id”的PK。Datamapper 要求将所有 PK 称为“id”。并且 FK 应该由它们的关系名称来调用,并以 '_id' 为后缀。所以地址中的 FK 应该称为“student_id”。

此外,Datamapper 不支持复合。所以没有办法合并来自 Person 和 Student 的记录。

于 2012-09-06T20:01:49.903 回答