在python :: Pylons中,我能够发出setup-app命令,它将查看我的模型并为我的特定数据库发出适当的CREATE TABLE或CREATE INDEX ddl。
似乎这将是CakePHP中的一个功能,但我找不到它。
事实上,我在手册中看到了这一点: “您可以像平常一样创建数据库表。当您创建Model类时,它们将自动映射到您创建的表。”这让我相信它不存在?
答案 0 :(得分:2)
不,它是相反的 - 你可以通过拥有数据库架构来创建模型,控制器和视图。首先拥有数据库设计模式更合乎逻辑。
检查this out
答案 1 :(得分:0)
上面接受的答案中的一些评论引导我创建这个答案。您可以使用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');