<分区>
我想要一些关于让模型可以在属性表中通过关系(使用 laravel 关系)访问的所有属性与将所有属性/设置存储在同一个表中但在 json 列中的反馈。
目前,我的应用程序有一个名为 settings 的属性表,它本质上也是多态的,因此多个模型可以在其中存储它们的属性。这个表有像这样的列
key (string),
value(string),
type (string) - tells if the value is of string, integer, boolean, json type
这样我就不会将字符串发送到 javascript 前端,而是可以发送字符串、整数、 bool native 类型,以便更好地处理前端的类型。在使用将字符串值转换为 int、 bool 值、json 或字符串的 php 函数将属性发送到前端之前,我会执行此转换,具体取决于类型。
这意味着如果一个模型有 40 个属性,所有属性都存储在它自己的行中,因此创建一个模型会导致创建 40 行来存储它可能具有的所有属性。
现在上面的方法与我只有一个 json 列的方法相比,我们可以将其称为设置,然后我将所有这 40 个属性转储到那里。
我用 json 列方法有什么好处?我去掉了一张表,也去掉了每次我做一些查询时需要加载到这个模型上的额外关系。我还省去了每次获取属性时将它们转换为整数、 bool 值、json 或字符串的麻烦。 (记住上面的类型列)要记住这些属性不需要是可搜索的,我只需要它们来读取它们。我永远不会在查询中使用它们来返回基于这些属性的帖子。
使用哪个更好,我正在构建一个 CMS 顺便说一下,您可以在此处查看它的实际效果: https://www.youtube.com/watch?v=pCjZpwH88Z0