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