地理位置情報データを提供する 3 つのテーブルがあります (この記事では簡略化しています)。
countries:
id:
name:
country_regions:
id:
country_id: (fk to countries:id)
name:
country_region_cities:
id:
country_region_id: (fk to country_regions:id)
postal_code:
name:
誰かが住所を追加するときに、国を選択して郵便番号を入力してもらいたい. 世界中の複数の都市が同じ郵便番号を持っている可能性があるため、これにより、それらがどこにあるかを把握できます。country_region_cities テーブルにあります。これに似たクエリを使用します。
SELECT
crc.id as crc_id
FROM
countries c,
country_regions cr,
country_region_cities crc
WHERE
c.id=231 and
crc.postal_code='02199' and
cr.country_id = c.id and
cr.id = crc.country_region_id
これは、完全なアドレスを格納する代わりに、アドレス データが必要なテーブルの crc.id に格納することです。2 つのフィールド (country_id と postal_code) をフォームに追加し、それを必要とするテーブルのデータベース フィールドに格納されている country_region_city:id を取得する方法がわかりません。
AbstractType を作成し、それを関係を格納する必要があるフォームにリンクする必要があると感じていますが、関連する他の 2 つのテーブルに対してさらに AbstractTypes を作成する必要がありますか?