php - 状态 - 使用哪种数据类型?

标签 php mysql

我目前正在查看我生成的代码,并试图提高其可读性和质量。这是我如何处理一个简单问题的示例,我一直认为这是一个糟糕的解决方案。

具有以下“状态”或本示例中的海拔级别的用户表

  1. 员工
  2. 主管
  3. 管理员

(这些可以是任何东西,例如,一个项目可以有“未完成”、“暂停”和“完成”状态)

过去,我总是将其存储为 INT 值,然后在打印出帐户及其状态时,我会编写一个函数将其转换回文本,以便打印在页面上,例如

if userLevel === 3 { return "Admin"; };

这一直是一个糟糕的解决方案,而且它不是很灵活。添加任何新类型的帐户都需要更新该功能。这种格式也使得阅读页面限制变得非常困难。

如果我要添加一行:

if userLevel !== 2 OR 3 {//重定向到错误页面 };

您可以看到这会如何变得令人困惑。

最近,我开始将这些“状态”纯粹存储为字符串,这样可读性更强。但现在我对 Laravel 的了解越来越多,我想知道我是否应该有额外的数据库表专门用于此。

那么我的问题是 - 这种数据的合适数据类型是什么,与之交互的理想方式是什么?

最佳答案

在遗留代码中,我会使用常量,基本上位并不重要,其中包含什么类型的数据。它是可读的,您可以轻松找到用法,您的 IDE 可以帮助您。

在包含大量业务逻辑的新代码中,您可以创建一个代表状态的小类,以便将逻辑放在那里。

在 DB 中 - 你可以找到几篇文章说枚举不是一个好主意。如果你想优化很多,tinyint 可以帮助你,但使用短字符串也很好(我通常使用它)。然后你应该在 php ofc 中翻译它,我推荐上面描述的对象方法。

关于php - 状态 - 使用哪种数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208431/

相关文章:

javascript - 提交表单结果后,如何将其发布到另一个 URL?

php - 前导零如何在 php 中工作?

php - 从字符串中删除多余的引号

php - Zend_Db_Select 如何从子查询中选择(派生表)

php - 使用序数值时 php strtotime 函数出现问题

php - mysql_query 求和结果

php - 使用 mysqli bind_result 未从数据库中获取值

c# - 如何在mvc.net中设置两个表之间的关系

php - mysql_query(INSERT ...) 函数在我的代码中不起作用

php - 多次插入不适用于 INNODB