2013-05-13 2 views
0

내 데이터 구조입니다.CakePHP의 데이터베이스 설계

연관에 외래 키를 사용했습니다. 예를 들어 각 상점에는 market_id가 있습니다.

회사 레코드를 삭제하면 올바른 지역도 삭제됩니다. 그러나 관련 시장, 상점 및 직원을 모두 삭제해야한다는 생각이 들었습니다. 또는 마켓을 삭제 한 경우 모든 상점 및 직원을 삭제해야합니다.

이 작업을 수행하는 가장 적합한 방법은 무엇입니까?

  1. 테이블에 외래 키를 추가 할 수 있습니까? 예를 들어, 상점에는 market_id 외에 region_id 및 company_id가 필요합니까?

답변

1

사용 종속 관계는 :

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasmany

dependent: When dependent is set to true, recursive model deletion is possible. In this example, Comment records will be deleted when their associated User record has been deleted.

당신은 추가 외부 키를 추가 할 필요가 없습니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 이것은 한 수준에서 효과가 있습니다. 나는 company hasMany Regions 모델에 의존하여 추가했다. 이로 인해 예상되는 결과가 생성되고 관련 지역이 삭제되었습니다. 그러나 시장, 상점 및 직원은 삭제되지 않았습니다. (나는 모든 모델에 종속성을 추가했다). 다음으로 Company hasMany Markets를 Company 모델에 추가하려고 시도했습니다. 그 결과 다음과 같은 오류가 발생합니다. "치명적인 오류 : 클래스 선언이 중첩되지 않을 수 있습니다."삭제하는 회사를 기반으로 Employee to Store to Market에서 Market to Market으로 여러 테이블에 걸쳐 재귀 적 삭제가 필요합니다. – Jose

+0

알았어! CompaniesController.php의 delete 호출은 cascade를 true로 설정해야합니다. 이것은 $ this-> Company-> delete ($ id, true)와 같습니다. 또한 다른 레벨에서 시작하기 위해 마켓에서 삭제를 시작하면 연결된 상점 및 직원을 삭제하기 위해 계단식을 추가 할 것입니다. – Jose