Pergunta

Estou trabalhando com um esquema imutável de banco de dados Legacy, onde cada instância de um objeto tem sua própria tabela no banco de dados com registros associados. Eu preciso mudar de modelo useTable Toda vez que o modelo é instanciado, mas retém o belo cache do bolo e o que não.

Digamos que eu tenha muitos objetos de bloco, que cada um tem vários objetos de nota (nota pertence a Pad, pad na nota). Cada bloco tem um registro na tabela Pads, no entanto, todas as notas têm sua própria tabela em um banco de dados (digamos, intitulado 'pad_ {id}'). Este esquema é fixo e devo usá -lo.

No momento, não preciso economizar, então faço isso no modelo antes de encontrar para apoiar a leitura:

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

}

Isso muda a tabela do modelo usada no banco de dados e funciona bem quando Core::debug > 0. No entanto, quando é zero, acho que o CakePHP armazena em cache o código do modelo e não altera corretamente a tabela. De qualquer forma, recebo um erro 404 quando visito/blocos/view/{pad_id} ou qualquer ação altera dinamicamente esta tabela. Não consigo descobrir qual é o erro exato, porque funciona bem quando ligo a depuração. Portanto, quaisquer indicadores de depuração dessa questão também ajudariam.

Obrigado!

Foi útil?

Solução

Você deve ser capaz de usar setSource() Para alterar a tabela, o modelo está usando. $this->setSource('pad_x') Definirá a tabela como 'PAD_X' e redefinirá o esquema do modelo. Referência da API

Outras dicas

Tentar var $persistModel = false; no seu controlador ou no AppController.

Ver: http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-seedup-cakephp-apps/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top