Pregunta

Estoy trabajando con un esquema de base de datos heredados de herida donde cada instancia de un objeto tiene su propia tabla en la base de datos con registros asociados. Necesito cambiar un modelo useTable Cada vez que se instancia el modelo, pero retenga el agradable almacenamiento en caché de Cake y lo que no.

Digamos que tengo muchos objetos de almohadilla, cada uno de los cuales tiene varios objetos de nota (nota pertenecer almohadilla, almohadilla hasmany). Cada PAD tiene un registro en la tabla PADS, sin embargo, cada nota tiene su propia tabla en una base de datos (digamos titulada 'PAD_ {ID}'). Este esquema es fijo y debo usarlo.

En este momento no tengo que ahorrar, así que hago esto en el modelo antes de encontrar para admitir la lectura:

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

}

Esto cambia la tabla del modelo utilizada en la base de datos y funciona bien cuando Core::debug > 0. Sin embargo, cuando es cero, creo que CakePHP almacena el código del modelo y no cambia correctamente la tabla. En cualquier caso, recibo un error 404 cuando visito/PADS/VIEH/{PAD_ID} o cualquier acción que cambie dinámicamente esta tabla. No puedo averiguar cuál es el error exacto, porque funciona bien cuando enciendo la depuración. Por lo tanto, cualquier consejo sobre la depuración de este tema también ayudaría.

¡Gracias!

¿Fue útil?

Solución

Deberías poder usar setSource() Para cambiar la tabla que está utilizando el modelo. $this->setSource('pad_x') Establecerá la tabla en 'pad_x' y restablecerá el esquema del modelo. Referencia de API

Otros consejos

Probar var $persistModel = false; en su controlador o en el AppController.

Ver: http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-peed-up-cakep-apps/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top