0

但它只会从 tab[1] 返回相同的数据.. 我想清楚地从 tab[1] 和 tab[0] 获取数据

$db = ConnectionManager::getDataSource('default');

$tab = $db->listSources();

        echo '<br>';
        $this->Form->useTable=$tab[1];
        print_r($this->Form->find(`all'));
        echo '<br>';
        $this->Form->use Table=$tab[0];
        print_r($this->Form->find('all'));
4

1 回答 1

0

在运行时更改Model->useTable不能正常工作,因为一旦模型被初始化,CakePHP 会缓存数据库表的模式。

要切换到另一个表并清除缓存模式,请使用Model->setSource('tablename')

文件;http://api.cakephp.org/2.3/source-class-Model.html#1100-1125

您的示例将如下所示;

echo '<br>';
$this->Form->setSource($tab[1]);
print_r($this->Form->find(`all'));
echo '<br>';
$this->Form->setSource($tab[0]);
print_r($this->Form->find('all'));

另外,请使用debug()输出结果进行调试,而不是print_r(). 这将输出格式正确的结果。(您需要在 app/Config/core.php 配置中将 debug 设置为 1 或更高,以便 debug() 工作)

然而

切换模型的源表通常是不好的做法,并且仅适用于非常特定的情况。我强烈建议为每个数据库表创建一个单独的模型。

于 2013-03-14T22:16:10.067 回答