我直接通过查询创建表。我只想导入一些数据。因此,我执行一个动态构建的查询,并尝试在组件类中执行此查询。(我使用一个随机的现有模型来执行这个查询是否有更好的原因?)
$query= "CREATE TABLE IF NOT EXISTS testerdbs (
'Ü1' varchar(6) COLLATE utf8_swedish_ci DEFAULT NULL,
'Ü2' varchar(6) COLLATE utf8_swedish_ci DEFAULT NULL,
'Ü3' int(3) DEFAULT NULL,
'Ü4' varchar(6) COLLATE utf8_swedish_ci DEFAULT NULL,
'Ü5' date DEFAULT NULL
)"
$data = ClassRegistry::init('import_files');
$data->query($query);
这工作正常。在同一个请求中,我想访问控制器中创建的表。
App::import('Model', "testerdb");
//$this->loadModel("testerdb");
$newTable = ClassRegistry::init("testerdb");
echo '<pre>', print_r($newTable->getColumnTypes()), '</pre>';
如果我尝试在同一请求中执行此操作,我总是会收到错误消息:
错误:在数据源默认值中找不到模型 testerdb 的表 testerdbs。
如果我再次执行完全相同的请求,一切正常......我谷歌了大约一个小时,似乎蛋糕缓存了模型。如果我再次执行此请求,蛋糕再次缓存所有表格,然后蛋糕找到我的新表格。所以我希望在同一个请求中加载或导入创建的表,但我不工作。
还有另一种加载表格的方法吗?我的错误在哪里?
感谢帮助!