mysql - 如何在 MySQL 中存储和获取封装的数组数据
问题描述
我想为我的 WebApplication 编写一个 CMS。现在我使用 PHP 作为数据源
"bladderTanks" => array(
"en" => array(
"0" => "0",
"1" => "bladder accumulator for up to 1 spare stroke (1x90°)",
"2" => "bladder accumulator for up to 2 spare stroke (2x90°)",
"3" => "bladder accumulator for up to 3 spare stroke (3x90°)"
),
"de" => array(
"0" => "0",
"1" => "Blasenspeicher mit bis zu 1 Stellfahrt (1x90°)",
"2" => "Blasenspeicher mit bis zu 2 Stellfahrt (2x90°)",
"3" => "Blasenspeicher mit bis zu 3 Stellfahrt (3x90°)"
)
)
var amountBladder = 1;
var language = "de";
var neededValue = bladderTanks[language][amountBladder]
或者
"signalVoltage" => array(
"en" => array(
"12" => "12 VDC potential-free, separate cable, power supplied by customer",
"24" => "24 VDC potential-free, separate cable, power supplied by customer",
"56" => "56 VDC potential-free, separate cable, power supplied by customer",
"110" => "110 VDC potential-free, separate cable, power supplied by customer",
"115" => "115 VAC potential-free, separate cable, power supplied by customer",
"230" => "230 VAC potential-free, separate cable, power supplied by customer"
),
"de" => array(
"12" => "12 VDC potentialfrei, seperates Kabel, Versorgung durch Kunde",
"24" => "24 VDC potentialfrei, seperates Kabel, Versorgung durch Kunde",
"56" => "56 VDC potentialfrei, seperates Kabel, Versorgung durch Kunde",
"110" => "110 VDC potentialfrei, seperates Kabel, Versorgung durch Kunde",
"115" => "115 VAC potentialfrei, seperates Kabel, Versorgung durch Kunde",
"230" => "230 VAC potentialfrei, seperates Kabel, Versorgung durch Kunde"
)
),
每次在代码(PHP 后端)中修改它很烦人。所以我想为我实现德语和英语两种语言的用户界面。
我不知道在 MySQL 中管理这些封装的最佳方法是什么。
这是一个希望可以理解的示例代码笔
解决方案
如果您想使用 MySQL 进行本地化,您需要一个名为语言的表,例如:
语言表:
id (PRIMARY KEY) | language (VARCHAR) |
1 en
2 de
膀胱坦克表:
id (PRIMARY KEY) | language_id (reference) | amount_bladder (UNSIGNED INT) | text (VARCHAR) |
1 1 0 0
2 1 1 bladder accumulator for up to 1 spare stroke (1x90°)
3 2 0 0
依此类推,你明白了。
因此,现在当您需要英文版本时,您只获取 language_id 1 的记录:
SELECT * FROM bladder_tanks WHERE language_id = 1 ORDER BY amount_bladder
保存或更新也是如此:
UPDATE bladder_tanks SET text = "blah blah" WHERE amount_bladder = 1 AND language_id = 1
INSERT INTO bladder_tanks (language_id, amount_bladder, text) VALUES (1, 1, "blah blah")
您的控制器操作/功能可能看起来像这样的伪:
function display() {
// SELECT amount_bladder, text FROM bladder_tanks WHERE language_id = 1 ORDER BY amount_bladder;
}
function store(array $bladderTanks) {
foreach ($bladderTanks as $bladderTank) {
// insert query
}
}
function update(array $bladderTanks) {
foreach ($bladderTanks as $bladderTank) {
// update query
}
}
希望这能让您对它应该如何工作有一个基本的了解。我试图让它尽可能简单,所以我放弃了 created_at、updated_at 额外的列(但是你应该根据自己的需要来构建它)
推荐阅读
- sql - 如何在 MariaDB 中找到约束名称?
- vue.js - 自动填充 vue 文件
- android - 如何在回收站视图中使用 Hashmap 从 Firebase 检索值?
- libvlc - 使用 python 启动一个普通的 VLC 会话
- c++ - c ++:在构造函数中定义的静态变量
- swiftui - 变量不应该是 NIL
- python - WH_SHELL 使用 Python WinAPI SetWindowsHookExA
- swift - 在 SwiftUI 中将 ObservableObject 链接到 DatePicker
- python - 如何在 Docplex on python 中表达二次目标
- php - 如何在 php MySQL 中的两个日期时间之间进行搜索?