1

我正在开发一个带有 C5 的页面,需要将各种数据附加到用户帐户。有两种类型的用户,具有不同的数据。一些数据是多维的,因此需要自定义数据库表。我现在的问题是,将所有数据存储在自定义数据库表中或将用户属性用于一维数据是否有意义。

可能对此没有一般性的答案,但也许有一些优点和缺点?

我经常问自己在 Concrete5 中将数据存储在哪里,并且会对其他人如何决定感兴趣......

4

1 回答 1

3

是的。出于与您已经确定的类似原因(可见、可搜索等)的原因,我肯定会将其存储为用户属性。

具体5是可扩展的,但不是超级可扩展的;您可以使用属性将数据附加到用户,但不能通过您也期望的一些完全自定义的对象/数据库表,例如,显示在用户个人资料页面上。

通常在 c5 中(与任何其他框架一样),以正确的方式(属性)执行此操作(尤其是对于第一个“对象”,而且对于每个附加的对象)比仅仅创建一个 db 表并链接到用户 ID 更困难。但是,就像在所有框架中一样,您将获得您甚至没有考虑过的好处。这是在搜索、可升级性以及可能只发生在明年接管开发的人身上的事情。

所以,说了这么多,去属性吧。而不仅仅是一维数据。您可以配置属性控制器(及其背后的数据库模式)来存储您希望的任何数据。查看地址属性。这包含多个字段(尽管它仍然是一维的)。我认为那里有一个开源“多地址”属性,它将 1-n 个地址存储为单个属性。你可以用一个额外的链接表来做到这一点,但我最近对 ​​c5 变得懒惰并通过json_encode()在“数据”字段中转储 ed (多维)数组来完成 no-mysql 。(在这种情况下,您的属性甚至不需要自己的表格——它可以使用默认表格。)然后您可以配置编辑界面以及显示值(例如,它只显示每个子的列表-对象的Name财产)。同样,您可以配置为搜索目的而编入索引的文本。

你问利弊。执行此自定义将更快,更直接。扩展属性,尤其是创建复杂的东西,并不是超级简单,而且没有很多好的文档。此外,属性编辑 UI(在用户仪表板页面上)有点笨拙。是的,您可以在“表格单元格”中“设计”任何您想要的内容,但您仍然仅限于让管理员单击属性名称,使用单元格中的编辑界面,然后(理想情况下)单击小磁盘图标。(在这里创建一个 javascript 对话框可能会解决一些问题。)

于 2013-05-01T23:02:26.027 回答