我对蛋糕不太熟悉..所以这是我的问题..我们正在开发一个关于mysql的应用程序,但最终可能需要部署到mssql或oracle。我们如何确保我们的主键不会出现奇怪的问题?在mysql中它们是AUTO INCREMENT列,但是oracle中的IIRC你需要使用序列...有没有办法使这个变为透明?我在想它吗?

有没有人有使用cakephp应用程序切换数据库供应商的经验?任何指针或事物要留意?

有帮助吗?

解决方案

在Cake数据库配置文件中,您可以选择驱动程序(请参阅 http:// book .cakephp.org /视图/ 40 /数据库-配置)。然后,如果您使用fieldname id 设置PK(如果使用MySQL,也将是您的A_I列),Cake将自动处理auto_increment插入。我认为(NB:没有尝试过Cake /其他的东西),Cake会像甲骨文那样处理A_I列。

Cake使用自己的数据库抽象层 - 但是所包含的抽象覆盖了很多,并且它将按指定的方式执行(即它将为您处理自动增量内容)。

简而言之,你可能会过度思考。也就是说,我会模拟一个小蛋糕应用程序,然后尝试在其后面切换数据库(更改您的数据库配置,您的应用程序应自动切换)。

HTH, 特拉维斯

其他提示

以下做法对我很有用

我使用蛋糕模式(我倾向于为每组模型设置1个模式文件.I.E。User,Role,Profile可能都在一个UsersSchema文件中)

另外,请看一下使用debuggable.com FixturesShell - 它允许您将测试用例夹具导入到实时数据库中。非常适合从架构文件中设置初始用户和角色组。

另外,如果将'id'字段设置为VARCHAR(36)而不是INT(#),cake将自动使用UUID样式id。这意味着如果您需要将数据移动到另一个应用程序或服务器,那么您的数据发生id值冲突的可能性会降低FAR FAR。

fixtures shell还有一个用于生成uuids的命令行工具(因此您可以将它们添加到夹具中的$ records变量以便插入等)。

总结 - 使用CakeSchema架构shell,来自debuggable.com的fixtures shell和id的UUID值,它应该为您提供便携式结构创建工具,便携式数据插入工具和便携式id字段格式。 / p>

http://github.com/felixge/debuggable -scraps /树/ fd0e5ad625cb21f5ba16e6b186821a5774089ac7 / cakephp的/壳/夹具

http://api.cakephp.org/class/schema-shell

您需要使用“蛋糕架构”管理您的数据库..这将在您创建数据库时处理所有特定于数据库的内容。

http://book.cakephp.org/view / 735 /生成和 - 使用-Schema的文件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top