我对蛋糕不太熟悉..所以这是我的问题..我们正在开发一个关于mysql的应用程序,但最终可能需要部署到mssql或oracle。我们如何确保我们的主键不会出现奇怪的问题?在mysql中它们是AUTO INCREMENT列,但是oracle中的IIRC你需要使用序列...有没有办法使这个变为透明?我在想它吗?
有没有人有使用cakephp应用程序切换数据库供应商的经验?任何指针或事物要留意?
答案 0 :(得分:1)
在Cake数据库配置文件中,您选择了驱动程序(请参阅http://book.cakephp.org/view/40/Database-Configuration)。然后,如果您使用字段名id
设置PK(如果使用MySQL,也将是您的A_I列),Cake将自动处理auto_increment插入。我认为(NB:没有尝试过Cake /其他的东西),Cake会像甲骨文那样处理A_I列。
Cake使用自己的数据库抽象层 - 但是所包含的抽象覆盖了很多,并且它将按指定的方式执行(即它将为您处理自动增量内容)。
简而言之,你可能会过度思考。也就是说,我会模拟一个小蛋糕应用程序,然后尝试在其后面切换数据库(更改您的数据库配置,您的应用程序应自动切换)。
HTH, 特拉维斯
答案 1 :(得分:1)
以下做法对我很有用
我使用蛋糕模式(我倾向于为每组模型设置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>
答案 2 :(得分:0)
您需要使用“蛋糕架构”来管理您的数据库。这将在您创建数据库时处理所有特定于数据库的内容。
http://book.cakephp.org/view/735/Generating-and-using-Schema-files