? 更新:PHP8.1终于为Enum带来了本机支持!??
See more here:
https://stitcher.io/blog/php-enums个
下面我最初的答案不再适用,但是如果您使用的是较旧版本的PHP.
原始答案
您有几个处理枚举的选项.在我们讨论一些之前,我首先强烈建议您not使用DBenum
列类型.
数据库枚举有很多问题.我建议阅读本文,例如:
http://komlenic.com/244/8-reasons-why-mysqls-enum-data-type-is-evil/
因此,现在让我们看看其他几个选项.
使用Laravel配置
由于您使用的是Laravel,一个非常简单的选项是将一组选项粘贴到一个配置文件中.
假设您创建了一个具有以下内容的新文件config/enums.php
:
return [
'phone_types' => [
'CELL' => "Cellular",
'HOME' => "Home",
'WORK' => "Work",
]
];
现在,您可以在代码的任何地方访问config('enums.phone_types')
,包括Blade 模板.
使用PHP包
@Banford的答案展示了如何使用类常量执行基本的枚举类型行为.如果您喜欢这种方法,我建议您阅读本文和包,它基于这个概念来提供强类型枚举:
https://stitcher.io/blog/php-enums个
https://github.com/spatie/enum个
您将创建一个如下所示的类:
/**
* @method static self cell()
* @method static self home()
* @method static self work()
*/
class PhoneTypes extends Enum
{
}
现在你可以在应用程序中拨打PhoneTypes::home()
.如果需要,可以查看该软件包的文档,了解如何创建值映射.
使用数据库关系
如果您想管理数据库中的选项,我将创建一个单独的phone_types
数据库表,并与customers
表建立关系.这是一个比使用enum
列类型更好的 Select .