我正在使用一个不变的旧数据库架构,其中每个实例的对象中的每个实例都有自己的表格,并带有关联的记录。我需要更改模型的 useTable 每次实例化模型时,都会保留蛋糕的好缓存,而不是。

假设我有许多垫子对象,每个对象都有几个音符对象(Note Altersto 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缓存了模型代码,并且无法正确更改表。无论如何,当我访问/pads/view/{pad_id}或动态更改此表的任何动作时,我会收到404错误。我无法弄清楚什么是确切的错误,因为当我打开调试时,它可以正常工作。因此,任何关于调试此问题的指示也将有所帮助。

谢谢!

有帮助吗?

解决方案

你应该能够使用 setSource() 要更改模型使用的表。 $this->setSource('pad_x') 将把表设置为“ PAD_X”并重置模型的模式。 API参考

其他提示

尝试 var $persistModel = false; 在您的控制器或AppController中。

看: http://www.pseudocoder.com/archives/2009/03/17/8-ways-to-peed-peed-up-cakephp-papps/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top