2013-03-14 75 views
0

但它会给回报从标签相同的数据[1]仅.. 我想从标签数据[1]选项卡[0]明显如何从两个不同的表蛋糕PHP获取数据

$ 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

你有一个空间不应该在那里:'$ this-> Form-> use Table = $ tab [0];'。除非你的问题只是一个错字,那么我很惊讶,不会导致错误。 – 2013-03-14 09:15:02

回答

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')); 

另外,请在print_r()代替使用debug()输出结果进行调试。这将输出格式正确的结果。 (你需要调试设置为1或更高的应用内的/配置/ core.php中将调试)配置(工作)

然而

切换模式的sourceTable会一般是不好的做法只适用于非常特殊的情况。我会强烈建议为每个数据库表创建一个单独的模型。

+0

谢谢,我想做出这样的事情,将动态提供表格的数据,这就是我必须这样做... – Rush 2013-03-15 03:58:48

+0

如果我的解决方案工作,请标记这个问题的答案' – thaJeztah 2013-03-15 07:24:32