1

我可以使用基于网页中输入的值创建的列在数据库中动态创建表吗?

实际上我需要创建一个应用程序,用户可以使用它来创建表单和模板,通过邮寄链接从其他人那里获取数据并将它们存储在数据库中。每个用户可以创建具有不同字段的不同表单并将其发送给许多人,这些人反过来填写数据并提交表单。那么如何存储数据,因为每个表单都有不同的字段?

4

2 回答 2

3

与其动态创建表,不如看看这些数据如何在静态表中表示。

怎么样:

  • 一个名为“forms”的表,其中包含“id”、“user_id”、“created”、“modified”等。
  • 一个名为“字段”的表,其中包含“id”、“form_id”、“type”、“label”、“required”、“properties”等。
  • 一个名为 'answers' 的表格,其中包含 'id'、'form_id'、'field_id'、'answer' 等。

这样你就可以依赖连接而不是执行大量的结构化 SQL。你的理智会感谢你。

于 2009-04-02T19:11:30.050 回答
1

是的,你可以这样做。这不是 cakePHP 特有的:您只需要知道用于创建和删除列的 SQL 代码,并将该 SQL 放入您的 query() 调用中。

这个页面是你的朋友。

你是否应该这样做是另一回事;通常,您不应在运行时修改数据库或表结构 - 仅在安装或升级期间。例如,如果您需要实现的是允许为用户配置文件或类似的东西创建自定义字段,那么在运行时修改表结构不是答案。您要做的是有一个包含所有自定义字段的单独表,以及一个包含所有值以及字段 ID 和用户 ID 的表。那将是使之正常化的正确方法;是的,它确实涉及三个表而不是一个,但它比将列 user_customfield1、user_customfield2、user_customfield3 都放在一个表中并在运行时修改该结构要好。

于 2009-04-02T07:02:21.590 回答