2008-09-29 7 views
1

CakePHP 응용 프로그램과 함께 매우 고유 한 데이터베이스를 사용하고 있으며 지금까지의 다중 모델보기 및 컨트롤러가 정상적으로 작동합니다. 나는 그것이 외래 키 entity_idsave() 대 saveAll()을 사용하는 CakePHP hasAndBelogsToMany

일부 테이블 등 여러 가지 다른 테이블에 id의이 단수 테이블 (Entity)가있는 하나의 관계를 하나의 (a CompanyEntity처럼) 일부는 수 많은 한 (Entity입니다 여러 Addresses) 등등.

데이터베이스 모델을 변경할 수 없으며 변경할 수 없으므로이 구조입니다.

Entity.type='x' (hidden inside the view) 
Company.name 
Address.0.street 
Address.0.city 
Address.1.street 
Address.1.city 

... and so on ... 

내 모든 모든 하드 작업, BEGIN TRANSACTION, 모든 INSERT들과 최종 COMMIT을하고 저장 ... :

내가 좋아하는 입력 이름으로 해당 테이블에 데이터를 저장 saveAll()을 사용하고

그러나 지금은 n 관계 인 EntityCategory을 작성했으며 모델 내에 전체 HABTM 관계를 작성했습니다. 난 그냥 HABTM 관계를 save()하지만 때

그것은 작동하고, 나는 saveAll() (이전처럼)을 HABTM 관계를 제외하고 사용하면이 모든게을 절약 할 수 있습니다.

내가 누락 된 항목이 있습니까? 어떻게하면 제대로 작동합니까? 오늘 다음 코드를 사용하고 다음 saveAll()는 여러 테이블의 모든 데이터를 저장

if (!empty($this->data)) { 
    $this->Entity->saveAll($this->data); 
    $this->Entity->save($this->data); 
} 

save()HABTM 관계를 저장 Entity->id에 ID를 저장하고 있지만,이 할 수있는 경우가 올바른 경우, 또는 잘 모르겠습니다 일부 구조/모델을 변경하면 문제가 생깁니다.

사용하는 가장 좋은 방법인가요? 올바른 CakePHP 내부 관계를 저장하는 방법 있습니까? 당신의 경험/지식이 나에게 말할 수있는 것은 무엇입니까?

답변

1

nightly을 다운로드하면이 문제가 해결됩니다.

다른 점은 깨질 수 있습니다.

0

saveAll() 및 HABTM 연관 문제는 알려진 CakePHP issue이며 1.2 RC2에서는 해결되지 않았습니다. 관련 모델 데이터를 저장하기에 가장 pratices으로 FAS로

은 CakePHP의 cookbook에 따라 진행됩니다

"관련 모델로 작업 할 때, 저장 모델 데이터는 항상 수행 할 것을 깨닫는 것이 중요하다 해당하는 CakePHP 모델입니다. 새 게시물과 관련 주석을 저장하는 경우 저장 작업 중에 게시 및 주석 모델을 모두 사용하게됩니다. "

그러나 saveAll() 및 save()를 사용해야하며 IMHO는보다 유연한/일반적인 해결책입니다.

관련 문제