c'è tutta una sfilza di roba che non mi torna da quei frammenti di codice... e cmq usare una classe sola per istanziare models diversi (nel tuo caso quel TableOggetti e quella cosa che tiri fuori quando l'input è di tipo stringa) mi sembra particolarmente errata come idea... normalmente si usa un repository ad entity e il caching delle entities ritornate piu che dal repository (quello che invoca $this->_db) dovrebbe essere fatto dal motore di persistenza ( il $this->_db), ma incorri in tutta una serie di casini che farli a mano mi sembra un suicidio e fossi in te lascerei perdere. Ah no scusa il model è sempre lo stesso... guarda magari ti funziona pure, concettualmente è molto confusa l'idea e anche errata, soprattutto il discorso di tenersi i record estratti in $istanze lascia il tempo che trova se fatto in maniera così "rozza" e dovresti vedere quanti benedici effettivamente ti dà (ma quante volte nella stessa esecuzione richiami la stessa query? se lo fai più di una volta direi che ci sia qualcosa da rivedere a livello di struttura del codice intorno a queste classi). Poi difficile dire, si capisce poco da quello che è il codice effettivo...troppo frammentata l'informazione