私はサイトビルダーです。いくつかのテーブルがあります。そのテーブルに基づいて、常にクラスを作成してそのオブジェクトを作成しても問題ありませんか? M:私はgiveMark()
、editMark()
などNがありますので、もう一つはgetMarks()
と学生(ID、NAME)テーブル、getMissingHours()
など今あるのだ教師テーブル(ID、USERNAME)と、それに基づいて、クラスを持っています学生と教師の関係、私はlink_teacher_student(ID、TEACHED_ID、STUDENT_ID)テーブルを持っています。これはむしろ "ヘルパー"テーブルです。クラス/オブジェクトも作成する必要がありますか?データベーステーブルのクラス/オブジェクトを作成することはできますか?
答えて
はい。これを行うだけではなく、データレイヤー(またはモデル)をコードの他の部分から分離することをお勧めします。
このようにすると、場所を選ばずに同じコードを繰り返す必要がなくなるため、コードを少なく書くことができ、必要なときに1つのコードを更新するだけで心配することができます。モデルを何らかの形で変更してください。
コードから必要な機能の量によって異なります。あなたのウェブアプリがの異なるユーザタイプのに基づいてたくさんの機能を要求するなら、私はそれぞれ異なるモデルとコントローラを作成します。ユーザータイプ間の機能に大きな違いがない場合は、さらにいくつかの方法を使用して単一の統一されたクラスを使用して区別することができます。
私はまた、学生テーブルにteacher_id
の列を追加するだけです。関係をマップするために完全な新しいテーブルを作成する必要はありません。
いいえの場合は、link_teacher_student
テーブルのオブジェクトを使用しないでください。 This is common thing to do in a RDBMS structure, but not in an OOP model. OOPモデルで同じrelationsipは、単に次のようになります
class Teacher {
protected $students = array();
}
class Student {
protected $teachers = array();
}
あなたはその後、例えば、Teacher
又はStudent
をフェッチするときに、配列を初期化するためにDataMapperを使用しますDAOは教師を照会し、join the studentsとなり、Mapperはcreate Student objectsになり、先生の配列に入力されます。
何ができるのですか?$students
または$teachers
をRepositoriesに入力し、ルックアップテーブルを照会するメソッドを提供します。
class Teacher
…
public function __construct($studentsRepository)
{
$this->students = $studentRepository;
}
public function getStudents()
{
return $this->students->findByTeacherId($this->id);
}
}
class StudentRepository
…
public function findByTeacherId($teacherId)
{
foreach ($this->dao->select('SELECT …', $teacherId) as $student) {
$students[] = $this->studentBuilder->build($student);
}
return $students;
}
}
- 1. データベーステーブルをRESTのリソースエンティティにすることはできますか?
- 2. laravelのmysqlデータベーステーブルからモデルを作成することは可能ですか
- 3. クラスオブジェクトのリストを作成して別のクラスオブジェクトと比較する
- 4. テーブルの作成後にデータベーステーブルのエンジンを変更することはできますか?
- 5. は、C#でクラスオブジェクトを作成
- 6. ゲームのループでクラスオブジェクトを作成する
- 7. データベーステーブルにマッピングされていないドメインクラスを作成することはできますか?
- 8. クラスオブジェクトごとにそれぞれのブーストロガーインスタンスを作成できますか?
- 9. letまたはvarキーワードでクラスオブジェクトを作成しますか?
- 10. ASP.net MVCビュー内のクラスオブジェクトを変更することはできますか?
- 11. wordpressプラグインをインストールするときにデータベーステーブルを作成する
- 12. データベーステーブルがアンドロイドアプリケーションで作成されるとしますか?
- 13. クラスオブジェクトまたはクラスオブジェクトをマップできますか?
- 14. クロスプラットフォームのオフラインモバイルアプリを作成することはできますか?
- 15. アンドロイドカメラのカスタムエフェクトを作成することはできますか?
- 16. jQueryでスクリプトタグを作成することはできますか?
- 17. Chromeでダイナミックテーマを作成することはできますか?
- 18. @IBOutletをカスタムビューで作成することはできますか?
- 19. Goでコンテキストマネージャを作成することはできますか?
- 20. iTextsharpでイメージライブラリを作成することはできますか?
- 21. Xcodeでデータブレークポイントを作成することはできますか?
- 22. ユーザーコントロールでイベントを作成することはできますか?
- 23. Doxygenでカスタムオブジェクトタイプを作成することはできますか?
- 24. FluentMigratorでトリガーを作成することはできますか?
- 25. iphoneでバックグラウンドサービスを作成することはできますか?
- 26. プログラムでハッシュルールを作成することはできますか?
- 27. アンドロイドでスタンドアロンブロードキャストレシーバを作成することはできますか?
- 28. Javascriptでオーディオレコーダーを作成することはできますか?
- 29. PHPは新しいデータベーステーブルをクエリ経由で作成することはできません
- 30. データをデータベーステーブルに挿入することはできません
http://en.wikipedia.org/wiki/Object-relational_mapping –