CakePHP 모델이 다시 변환되지 않고 테이블을 변경할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1506101

  •  19-09-2019
  •  | 
  •  

문제

나는 객체의 각 인스턴스에 관련 레코드가있는 데이터베이스에 자체 테이블이있는 변하지 않는 레거시 데이터베이스 스키마로 작업하고 있습니다. 모델을 변경해야합니다 useTable 모델이 인스턴스화 될 때마다 케이크의 멋진 캐싱과 그렇지 않은 것을 유지합니다.

패드 객체가 많이 있다고 가정 해 봅시다. 각각의 노트 객체가 있습니다 (주석 패드, 패드 hasmany note). 각 패드에는 패드 테이블에 레코드가 있지만 모든 노트에는 데이터베이스에 자체 테이블이 있습니다 ( 'PAD_ {ID}'). 이 스키마는 고정되어 있으며 사용해야합니다.

지금은 저축을 할 필요가 없으므로 읽기를 지원하기 전에 모델 에서이 작업을 수행합니다.

function beforeFind($query_data) {
    if(empty($query_data['pad_id'])) {
        return false;
    } else {
        $this->useTable = $query_data['pad_id'];
        parent::__construct();
        return $query_data;
    }

}

이것은 데이터베이스에 사용 된 모델 테이블을 변경하고 Core::debug > 0. 그러나 0이면 CakePhp가 모델 코드를 캐시하고 테이블을 올바르게 변경하지 않는다고 생각합니다. 어쨌든,/pads/view/{pad_id}를 방문 하거나이 테이블을 동적으로 변경할 때 404 오류가 발생합니다. 디버그를 켜면 잘 작동하기 때문에 정확한 오류가 무엇인지 알 수 없습니다. 따라서이 문제를 디버깅하는 것에 대한 포인터도 도움이 될 것입니다.

감사!

도움이 되었습니까?

해결책

당신은 사용할 수 있어야합니다 setSource() 테이블을 변경하려면 모델이 사용 중입니다. $this->setSource('pad_x') 테이블을 'pad_x'로 설정하고 모델의 스키마를 재설정합니다. API 참조

다른 팁

노력하다 var $persistModel = false; 컨트롤러 또는 AppController에서.

보다: http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-feed-up-cakephp-apps/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top