Я согласен с Ником - если только вы не расшаривались по соображениям производительности, я бы объединил все ваши таблицы в одну таблицу со столбцом на год (если вы сделаете INT, это не сильно повлияет на производительность).
Однако, если вам нужно разделить таблицы, я бы рекомендовал просто переопределить метод Model :: find () для принятия дополнительных параметров.В вашей модели напишите что-то вроде приведенного ниже псевдокода:
function find( $type, $options = array() ) {
if( isset( $options['table'] ) ) { // this is the index where you'll pass your table name
$this->setSource( $options['table'];
}
return parent::find( $type, $options );
}
По сути, вызов setSource изменит вашу таблицу, к которой вы обращаетесь, во время выполнения.См. Может ли модель CakePHP изменить свою таблицу без повторного создания? для получения дополнительной информации.