在 python::Pylons 中,我可以发出 setup-app 命令,它会查看我的模型并为我的特定数据库发出适当的 CREATE TABLE 或 CREATE INDEX ddl。
似乎这将是 CakePHP 中的一个功能,但我很难找到它。
事实上,我在手册中看到了这一点:“您可以像往常一样创建数据库表。当您创建模型类时,它们会自动映射到您创建的表。”
这让我相信它不存在?
在 python::Pylons 中,我可以发出 setup-app 命令,它会查看我的模型并为我的特定数据库发出适当的 CREATE TABLE 或 CREATE INDEX ddl。
似乎这将是 CakePHP 中的一个功能,但我很难找到它。
事实上,我在手册中看到了这一点:“您可以像往常一样创建数据库表。当您创建模型类时,它们会自动映射到您创建的表。”
这让我相信它不存在?
不,它是另一种方式 - 您可以通过拥有 DB 模式来创建模型、控制器和视图。首先有一个数据库设计模式更合乎逻辑。
看看这个
上面接受的答案中的一些评论使我创建了这个答案。您可以使用 YourModel->query() 函数在技术上动态创建新表。我目前正在写的行为中使用它。这适用于 CakePHP 2.x,很确定它也适用于 1.3。
在行为的设置函数中,我正在检查表是否已经存在。如果不是我创建它。
$dataSource = ConnectionManager::getDataSource('your DB');
if(!in_array($tableName, $dataSource->listSources()){
$this->createYourTableFunction();
}
在 createYourTableFunction 中,您创建一个临时模型来运行 YourModel->query() 。只需提供您的 SQL 指令即可。创建临时模型时,只需将 table 参数设置为 false,这样您就不会收到缺少表的错误。
$YourModel = new Model(array('table' => false, 'name' => 'YourModel', 'ds' => 'Your DB'));
$YourModel->query('SQL instruction string');