【发布时间】:2018-08-29 17:55:57
【问题描述】:
亲爱的 CakePHP 3 开发者,
我想在 CakePHP 3.4.13 项目中使用 SQL's Temporary Tables 来通过脚本进行单次运行。浏览 Cake 的文档,似乎没有直接的方法告诉 CakePHP 我的愿望。那么,我该怎么做才是最好的呢?
我在src/Model/Table/TempItemsTable.php准备了一张表:
namespace App\Model\Table;
use Cake\ORM\Table;
class TempItemsTable extends Table
{
public $fields = [
'id' => ['type' => 'integer'],
'con' => ['type' => 'string', 'length' => 255, 'null' => false],
'_constraints' => [
'primary' => ['type' => 'primary', 'columns' => ['id']]
]
];
public function initialize(array $config)
{
// $this->setTable(null);
}
}
使用 $fields 告诉 CakePHP 所需的表模式的想法来自一个可能不相关的 documentation for Test Fixtures。
但是我如何告诉 CakePHP 不要在数据库中寻找一个实际的表呢?
未注释的行$this->setTable(null); 是我的糟糕尝试,据说与the right way in earlier versions of CakePHP 类似,但根据版本3.x 文档,setTable() 不接受null,而table() 接受,但它是自 3.4 起已弃用,也没有改变任何东西。
当然,当我尝试通过$temp = TableRegistry::get('TempItems'); 访问控制器中的这个“表”时,我会得到这个异常:
SQLSTATE[42S02]:未找到基表或视图:1146 表“mydatabase.temp_items”不存在
求助,我卡住了。 :(
【问题讨论】:
标签: mysql cakephp cakephp-3.0 temp-tables