在MySQL中以数据库列的形式存储值类型

问题描述 投票:0回答:1

我需要的是,我想,很普通。我想创建一个 global_variables 表来存储一些变量,我需要在我的整个Web应用中使用MySQL。问题是每个变量都有多种类型(int、float、string、blob等)中的一种。所以,我需要能够创建我的表,表的列是这样的 id, program_name, value_type, value 哪儿 value 将会是一个字符串,我将会在获取设置值时进行相应的转换。所以一些示例记录会是。

[
    ['program_name' => 'invoice_number', 'value_type' => 'int', 'value' => '12345'],
    ['program_name' => 'last_merge', 'value_type' => 'date', 'value' => '10.06.2020'],//etc.
]

让我停不下来的是缺少一个列的类型 Type 在MySQL中。如果有任何建议,我们将非常感激!

P.S. 我使用MySQL MariaDB和Laravel 5.8.

mysql laravel mariadb laravel-5.8
1个回答
1
投票

将它们存储为字符串即可。

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

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

在布尔语境中,数字0是false,其他都是true。

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


0
投票

你可以自己写一个约束条件。

CREATE TABLE global_variables (  
     id serial,  
     ...
     value_type varchar(32),
     constraint check (value_type in ("int", "date", "varchar", "boolean" ... ))
);

0
投票

所以经过一些调试和试验,我想出了一个适合我的情况的最佳工作方案。我注册了 value_type 列作为一个给定允许类型的枚举, 然后为我的 GlobalVariable 实地模型 value,将数值进行相应的转换。谢谢大家的建议

© www.soinside.com 2019 - 2024. All rights reserved.