问题描述
我有一个 CakePHP 4 模型 Organisation
,它应该保存组织所拥有的“类”。有三个固定选项在不久的将来不太可能改变,并且可以应用任意数量的选项(例如,没有,或者只有第一个和第三个)。
选项 1:连接表
现在对关系数据库执行此操作的默认方法是创建一个新表 (classes
),用这三个选项填充它并使用连接表 (classes_organisations
) 来表示许多-对多绑定。尽管为具有三个固定选项的小东西创建两个额外的数据库表,但对我来说似乎有点乏味
选项 2:布尔列
下一个选项是为每个选项添加一个布尔列。但这似乎也不是一个干净的解决方案。如果有五个选项呢?如果有更多这些多选项类,比如“字段”(我至少会有一个)怎么办。列数会快速增长,并且会使表格变得混乱。
选项 3:json
然后是 json。起初对我来说这似乎是最好的解决方案(classes
只有一个数据列,没有额外的数据表和模型),但它也有一些缺点。一方面,它不可查询(尽管对我的项目来说不是问题)。另一个问题是序列化。它不能添加到 Cake\ORM\Entity
getter/setter 中,因为它会在保存时再次反序列化(它为此使用了 getter)。 Cake\ORM\Table
确实提供了可用于序列化的 beforeSave 方法,但没有在查询数据库进行反序列化后立即触发的方法。
最后,MysqL 5.7+ 具有原生 json 支持,但并非所有生产数据库都更新到此级别(根据我的经验),而且 Phinx migrations plugin 都不支持。
那么在这种情况下,哪些选项最适合使用?这个事情谁有经验?我是否忘记了这篇文章中的任何优点/缺点甚至整个解决方案?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)