我认为,我需要的是非常普通的。我想使用MySQL创建一个global_variables表来存储我在整个web应用程序中需要的一些变量。问题是每个变量都有多种类型(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.
]让我止步不前的是MySQL中缺少列类型Type。任何有任何建议的帮助都是非常感谢的!
附言:我使用的是MySQL MariaDB和Laravel 5.8。
发布于 2020-06-11 05:54:20
只需将它们存储为字符串。
在日期上下文中,字符串将自动转换。
在数字上下文中,字符串将自动转换。
在布尔型上下文中,数字0是假的,其他的都是真的。
如果你有反例,让我们来看看。可能有一个简单的解决方法。
发布于 2020-06-10 19:18:54
您可以编写自己的约束:
CREATE TABLE global_variables (
id serial,
...
value_type varchar(32),
constraint check (value_type in ("int", "date", "varchar", "boolean" ... ))
);发布于 2020-06-10 22:04:33
因此,经过一些调试和试验,我为我的案例提出了一个最好的工作解决方案。我将value_type列注册为给定的允许类型的枚举,然后在字段value上为我的GlobalVariable模型创建了一个访问器和一个赋值器(Laravel特性),这将相应地转换值。谢谢你的建议!
https://stackoverflow.com/questions/62301802
复制相似问题