PHP Larave 框架枚举型号配置的设计问题讨论!

2017 年 5 月 27 日
 jsrgqinbin

系统开发过程中会出现好多状态类的字段,如:订单分为订单状态,发货状态,支付状态。数据库存放肯定是 0,1,2,3,4 这样来存,为了方便使用会在 Repository 或者 Model 里定义部分常量,如下:

const ORDER_STATUS_CREATE = 0;//初始状态
const ORDER_STATUS_PAIED = 1;//已支付状态

问题来了:

public static function getStatusMap()
{
    return [
        self::ORDER_STATUS_CREATE => trans('xxxx'),
        self::ORDER_STATUS_PAIED => trans('xxxx')
    ];
}
//用以上方法来写,总感觉设计上不妥当,但是不没想到更好的办法

以上问题有大神有好的设计?

4236 次点击
所在节点    PHP
23 条回复
ahkxhyl
2017 年 5 月 27 日
放 helper 呢?
jsrgqinbin
2017 年 5 月 27 日
@ahkxhyl 好多单据都有状态,放 helper 到时候会很乱吧。。。
sun522198558
2017 年 5 月 27 日
标题都少了个 l
ylsc633
2017 年 5 月 27 日
那要么 妥协一下 数据库, 存字符串类型... 这样前端不管什么语言 都能看懂...

就是查的时候 慢一点了...
aksoft
2017 年 5 月 27 日
二维
jsrgqinbin
2017 年 5 月 27 日
@ylsc633 其实不是慢一点。。。数据大一点的话,慢不少。。。
jswh
2017 年 5 月 27 日
你可以自己写一个类来模拟缺失的枚举类型。
run2
2017 年 5 月 27 日
放 Model 里
因为是 Model 相关的状态
比如 Order 的 status (括号内为举例 原来的 1 2 3 4)
return 非 locale 的 key (order_status_created)
在具体显示页面在显示为 locale 后的 value (“订单已创建”)
chenset
2017 年 5 月 27 日
我们是在 config 目录下面建立的数组配置, phpstorm 下面有 laravel plugin 可以安装. 装完后支持 config()函数的自动完成提示, 爽的不要不要的.
jsrgqinbin
2017 年 5 月 27 日
@chenset config 里多语言好像是问题
qce7
2017 年 5 月 27 日
model+1
cys
2017 年 5 月 27 日
- 在 config 目下建立相关的数组配置
- 通过建立字典的方式写入数据库
johnlui
2017 年 5 月 27 日
必须用中文呀
wanghanlin
2017 年 5 月 27 日
歪个楼,pay 应该是 paid,不是 paied,另外 create 最好统一形式用 created 吧
wanghanlin
2017 年 5 月 27 日
存数据库就好了,专门一个 order_statuses 表
bugsnail
2017 年 5 月 27 日
@wanghanlin #15 为了几个状态,多查一次数据库浪费资源,不值得
wanghanlin
2017 年 5 月 27 日
@bugsnail 这不还有 cache 么
bugsnail
2017 年 5 月 27 日
@wanghanlin #17 跑题了,还是谈设计吧

状态少的话,我感觉还是放 config 里面好一点,当然 helper 也行;

多的话,那还是数据库吧
ahkxhyl
2017 年 5 月 27 日
那就放 model 了 哪块功能放在哪个 model 里
wanghanlin
2017 年 5 月 27 日
@bugsnail 可以单独搞个类,不存数据库,类里存着就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/364211

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX