Я работаю с неизменяемой устаревшей схемой базы данных, где каждый экземпляр объекта имеет свою собственную таблицу в базе данных со связанными записями. Мне нужно менять useTable
модели каждый раз, когда модель создается, но сохранить хорошее кэширование Cake, а что нет.
Скажем, у меня есть много объектов пэдов, у каждого из которых есть несколько объектов заметок (Note принадлежит To Pad, Pad 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
. Однако, когда он равен нулю, я думаю, что CakePHP кеширует код модели и не меняет таблицу должным образом. В любом случае я получаю сообщение об ошибке 404 при посещении / pads / view / {pad_id} или любых других действий, которые динамически изменяют эту таблицу. Я не могу понять, какая именно ошибка, потому что она прекрасно работает, когда я включаю отладку. Так что любые указания по устранению этой проблемы также могут помочь.
Спасибо!