如何在 PHP 代码中与数据库同步枚举类型?

5

拥有数百个表的数据库通常会定义多个枚举/集合。那么,如何将您的PHP代码与枚举值同步,以避免在代码中使用字符串文字(我们都知道这似乎更容易,但从长远来看会导致愚蠢的错误)。


我唯一能想到的好方法是,在项目构建期间使用一个进程为DB中的所有枚举生成常量,或者创建并编译一个包含这些值的PHP扩展程序。


还有其他不同或更好的解决方案吗?


1
当您提出这个问题时,您将其许可为CC BY-SA 2.5。您无法撤销该许可证。请停止破坏您的问题。我同意标记的重复不是一个好的重复,并已根据此基础投票重新打开您的问题。 - Chris
1
请注意,我们有一个官方行为准则。你最近编辑的一些语言不太合适,请友善相处。 - Chris
@Chris,你不觉得这是唯一能让我做对的方法很悲哀吗? 我同意,肯定还有其他方法,如果有行之有效的方法,我会很高兴使用它。 - Itay Moav -Malimovka
你本可以添加一个简短的说明,解释为什么重复问题不适用于你现有的问题。这将把它放入重新打开队列中,并很可能导致更快地重新打开。完全用一个简短的怒吼替换你的问题并不太可能有所帮助,事实上,当我撤销你的第一次编辑时,我完全错过了这个被关闭的坏重复问题。 - Chris
1个回答

3
正如柏拉图所说:PHP和SQL要么独立,要么SQL是由PHP生成的,要么PHP是由SQL生成的,或者两者都是从相同的源代码生成的。
第一种情况通常不可接受,因为如果有很多变化发生,它就不太稳定。
第二种情况是最近的一些解决方案经常出现的情况,这些解决方案从PHP端管理您的SQL(并且还能够优雅地处理来自PHP端的模式更改)。这意味着您疯狂的SQL技能可能是无用的,也会让人感到沮丧。
第三种情况是您提出的。只要您可以在不影响源代码控制系统和包系统的情况下管理“构建期间生成”的部分即可。拥有一个干净的构建系统有助于解决问题(这在PHP中有些不寻常)。
第四种情况涉及将现有的数据库建模工具调整为生成SQL模式和PHP代码。这样,您只需要每两周使用该工具一次,生成PHP和SQL,然后提交结果即可。但是,调整工具可能非常麻烦(不过,您可以尝试查找XML导出并从那里开始工作)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接