CakePHP访问动态创建的表?

时间:2009-05-14 09:01:42

标签: mysql cakephp dynamic

作为Web应用程序的一部分,用户可以上传数据文件,在专用的MySQL数据库中生成新表以存储数据。然后,他们可以通过各种方式处理这些数据。

这个应用程序的下一个版本是用CakePHP编写的,目前我无法弄清楚如何在运行时动态分配这些表。

我有不同的数据库配置设置,可以很好地创建数据上传表,但是一旦完成,我就无法从控制器访问新表作为数据操作的记录CRUD操作的一部分。

我希望它符合

的路线
function controllerAction(){ 
$this->uses[] = 'newTable'; 
$data = $this->newTable->find('all'); 

//use data 
}

但它返回错误

  

未定义的属性:   ReportsController :: $ newtable的

     

致命错误:调用成员函数   find()在非对象中   /app/controllers/reports_controller.php   在第60行

任何人都可以提供帮助。

2 个答案:

答案 0 :(得分:1)

您需要致电$this->loadModel('newTable')以正确初始化它。 Cake需要正确初始化$ this-> newTable,并调用所有回调。

当然,你不需要$this->uses[] = 'newTable';,除了为$ uses数组添加另一个值之外什么都不做。

答案 1 :(得分:0)

尝试:

function controllerAction() {
  $data = ClassRegistry::init('ModelNameForNewTable')->find('all');
}

如果您的表名为'new_tables',则您的模型名称应为'NewTable'