2012-05-17 2 views
0

나는 지리적 위치 데이터를 제공하는 3 개의 테이블을 가지고있다.Symfony2 양식. 두 번째 양식 필드와 세 번째 테이블을 사용하여 네 번째 테이블의 레코드에 대해 하나의 ID를 반환합니까?

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가 필요한 테이블의 데이터베이스 필드에 저장된 ID를 얻는 방법을 잘 모르겠습니다.

나는 AbstractType을 만들어서 릴레이션 싱을 저장할 필요가있는 폼에 링크해야한다고 생각하지만, 관련된 두 개의 테이블에 대한 AbstractTypes를 더 만들어야 할 필요가 있습니까?

답변

관련 문제