2

Codeigniter2.1.2でDataMapperORMを使用しています。

私はこの種のエンティティを持っています:

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はありません。PKとして個人IDを使用します。

だから私の問題はです。学生を作りたい:

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

アデスを含む、$studentからのすべてのデータが欲しいです。personinclude_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 に答える