CakePHP可以自动从模型创建表吗?

时间:2010-08-11 04:07:20

标签: cakephp cakephp-1.3

在python :: Pylons中,我能够发出setup-app命令,它将查看我的模型并为我的特定数据库发出适当的CREATE TABLE或CREATE INDEX ddl。

似乎这将是CakePHP中的一个功能,但我找不到它。

事实上,我在手册中看到了这一点: “您可以像平常一样创建数据库表。当您创建Model类时,它们将自动映射到您创建的表。”

这让我相信它不存在?

2 个答案:

答案 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');