0

地理位置情報データを提供する 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 を作成する必要がありますか?

4

1 に答える 1

0

これを行う方法は、Symfonyクックブックで説明されているカスタムデータトランスフォーマーオブジェクトを使用することです。

http://symfony.com/doc/current/cookbook/form/data_transformers.html

これに気づいたら、数時間でタスクを完了し、正常に機能しています。

于 2012-05-22T13:54:08.560 に答える