我需要的是,我想,很普通。我想创建一个 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.
将它们存储为字符串即可。
在日期上下文中,字符串会自动转换。
在数字上下文中,字符串会自动转换。
在布尔语境中,数字0是false,其他都是true。
如果你有反例,让我们看看。 可能有一个简单的变通方法。
你可以自己写一个约束条件。
CREATE TABLE global_variables (
id serial,
...
value_type varchar(32),
constraint check (value_type in ("int", "date", "varchar", "boolean" ... ))
);
所以经过一些调试和试验,我想出了一个适合我的情况的最佳工作方案。我注册了 value_type
列作为一个给定允许类型的枚举, 然后为我的 GlobalVariable
实地模型 value
,将数值进行相应的转换。谢谢大家的建议