首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值类型存储为MySQL中的数据库列

将值类型存储为MySQL中的数据库列
EN

Stack Overflow用户
提问于 2020-06-10 18:53:02
回答 3查看 43关注 0票数 0

我认为,我需要的是非常普通的。我想使用MySQL创建一个global_variables表来存储我在整个web应用程序中需要的一些变量。问题是每个变量都有多种类型(int、float、string、BLOB等)。因此,我需要能够创建包含idprogram_namevalue_typevalue等列的表,其中value将是一个字符串,我将在获取/设置值时对其进行相应的转换。因此,一些示例记录如下:

代码语言:javascript
复制
[
    ['program_name' => 'invoice_number', 'value_type' => 'int', 'value' => '12345'],
    ['program_name' => 'last_merge', 'value_type' => 'date', 'value' => '10.06.2020'],//etc.
]

让我止步不前的是MySQL中缺少列类型Type。任何有任何建议的帮助都是非常感谢的!

附言:我使用的是MySQL MariaDB和Laravel 5.8。

EN

回答 3

Stack Overflow用户

发布于 2020-06-11 05:54:20

只需将它们存储为字符串。

在日期上下文中,字符串将自动转换。

在数字上下文中,字符串将自动转换。

在布尔型上下文中,数字0是假的,其他的都是真的。

如果你有反例,让我们来看看。可能有一个简单的解决方法。

票数 1
EN

Stack Overflow用户

发布于 2020-06-10 19:18:54

您可以编写自己的约束:

代码语言:javascript
复制
CREATE TABLE global_variables (  
     id serial,  
     ...
     value_type varchar(32),
     constraint check (value_type in ("int", "date", "varchar", "boolean" ... ))
);
票数 0
EN

Stack Overflow用户

发布于 2020-06-10 22:04:33

因此,经过一些调试和试验,我为我的案例提出了一个最好的工作解决方案。我将value_type列注册为给定的允许类型的枚举,然后在字段value上为我的GlobalVariable模型创建了一个访问器和一个赋值器(Laravel特性),这将相应地转换值。谢谢你的建议!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62301802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档