2009年8月10日
Doctrineの継承機能について
こんにちは。小川です。
よくあるオブジェクトリレーショナルマッパーは基本的に1つのテーブルに対して1つのモデルオブジェクトを定義します。このときにモデルオブジェクト間に親子関係を持たせたり、いくつかのモデルに対して抽象クラスを作りたいと思ったことはありませんか?Doctrineには継承に関する3つのパターンが用意されており、今回はそれをご紹介したいと思いま す。
まずは3つのパターンの概要を説明します。
・Simple inheritance
単純に1つのテーブルに対して複数のモデルを作成する方法です。
どのレコードがどのモデルに対応するかは特に判断は行いません。
・Concrete inheritance
モデル1つひとつに対してテーブルを作成する方法です。
テーブルごと分けるため、カラムもテーブルごとに定義されます。
・Column Aggregation inheritance
単純に1つのテーブルに対して複数のモデルを作成する方法です。
Simple inheritanceと違い、各レコードに対してモデルに対応するキーを付与してレコードの判断を行います。
では実際のコードを見つつ、詳細について説明していきたいと思います。
◆Simple inheritance
# schema.yml
Log: