私はLaravelが初めてで、以前はcodeigniterに取り組んでいました。私は Eloquent ORM の概念に魅了されています。Eloquent の機能について一般的な質問があります。ORM の機能とは何ですか。つまり、関連するテーブル行をどのレベルまで取得できるかということです。「 http://four.laravel.com/docs/eloquent#relationshipsを見ると
- 一対一
- 一対多
- 多対多
- ポリモーフィックな関係。
私の意見では、「One To One」はレベル 1 を意味します。
Example: User::find(1)->posts;
[内部でユーザー 1 と彼の投稿を検索]
「多対多」はレベル 2 を意味します。 table1 table2 table3:
Example: User::find(1)->postcomments
[内部でユーザー 1 と彼の投稿を見つけ、投稿のコメントを見つけます]
では、これを 4 レベルまたは 5 レベルに拡張できますか。
データベース関係[item(id) -itemtag(id, itemid, tagid) - tag(id) - tagtype(id, tagid, typeid) - type(id)]
ありがとう
================
次の投稿
私はmsturdyの説明が好きですが、彼が説明したようにコードを機能させることはできませんでした.
これがデータベーステーブルを使用した私のコードです。
CREATE TABLE `roles` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`role` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=4;
CREATE TABLE `students` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=5;
CREATE TABLE `student_role` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`student_id` INT(10) NULL DEFAULT NULL,
`role_id` INT(10) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `fk_student_role_1_idx` (`student_id`),
INDEX `fk_student_role_2_idx` (`role_id`),
CONSTRAINT `fk_student_role_1` FOREIGN KEY (`student_id`) REFERENCES `students` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT `fk_student_role_2` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ON UPDATE NO ACTION ON DELETE NO ACTION
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
AUTO_INCREMENT=6;
モデル
class Student extends Eloquent {
public function roles()
{
return $this->belongsToMany('Role', 'student_role');
}
}
class Role extends Eloquent {
public function students()
{
return $this->belongsToMany('Student', 'student_role');
}
}
Route::get('aaaas/{id}', function($id){
$student = Student::find($id);
$studentstr = print_r($student->toArray(), true);
print "<pre>student: $studentstr</pre>";
$roles = print_r($student->roles->toArray(), true);
print "<pre>role: $roles</pre>";
}
================
上記のコードは正常に動作します
しかし $student->roles->students
期待どおりに動作しません。あなたの答えをサポートする実用的なコードがあれば、それは素晴らしいことです.
しかし、とにかく説明をありがとう。