但它只会从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'));
答案 0 :(得分: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()正常工作)
<强>然而强>
切换模型的源表通常是不好的做法,仅适用于非常具体的情况。我强烈建议为每个数据库表创建一个单独的模型。