
系统开发过程中会出现好多状态类的字段,如:订单分为订单状态,发货状态,支付状态。数据库存放肯定是 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') ]; } //用以上方法来写,总感觉设计上不妥当,但是不没想到更好的办法 1 ahkxhyl 2017-05-27 13:24:17 +08:00 放 helper 呢? |
2 jsrgqinbin OP @ahkxhyl 好多单据都有状态,放 helper 到时候会很乱吧。。。 |
3 sun522198558 2017-05-27 13:37:40 +08:00 标题都少了个 l |
4 ylsc633 2017-05-27 13:42:31 +08:00 那要么 妥协一下 数据库, 存字符串类型... 这样前端不管什么语言 都能看懂... 就是查的时候 慢一点了... |
5 aksoft 2017-05-27 13:44:23 +08:00 二维 |
6 jsrgqinbin OP @ylsc633 其实不是慢一点。。。数据大一点的话,慢不少。。。 |
7 jswh 2017-05-27 14:27:6 +08:00 你可以自己写一个类来模拟缺失的枚举类型。 |
8 run2 2017-05-27 14:32:46 +08:00 放 Model 里 因为是 Model 相关的状态 比如 Order 的 status (括号内为举例 原来的 1 2 3 4) return 非 locale 的 key (order_status_created) 在具体显示页面在显示为 locale 后的 value (“订单已创建”) |
9 chenset 2017-05-27 14:37:41 +08:00 我们是在 config 目录下面建立的数组配置, phpstorm 下面有 laravel plugin 可以安装. 装完后支持 config()函数的自动完成提示, 爽的不要不要的. |
10 jsrgqinbin OP @chenset config 里多语言好像是问题 |
11 qce7 2017-05-27 16:09:03 +08:00 model+1 |
12 cys 2017-05-27 16:19:23 +08:00 - 在 config 目下建立相关的数组配置 - 通过建立字典的方式写入数据库 |
13 johnlui 2017-05-27 16:34:05 +08:00 必须用中文呀 |
14 wanghanlin 2017-05-27 17:06:43 +08:00 歪个楼,pay 应该是 paid,不是 paied,另外 create 最好统一形式用 created 吧 |
15 wanghanlin 2017-05-27 17:08:54 +08:00 存数据库就好了,专门一个 order_statuses 表 |
16 bugsnail 2017-05-27 17:27:30 +08:00 @wanghanlin #15 为了几个状态,多查一次数据库浪费资源,不值得 |
17 wanghanlin 2017-05-27 17:39:15 +08:00 @bugsnail 这不还有 cache 么 |
18 bugsnail 2017-05-27 17:41:38 +08:00 |
19 ahkxhyl 2017-05-27 17:47:25 +08:00 那就放 model 了 哪块功能放在哪个 model 里 |
20 wanghanlin 2017-05-27 17:50:46 +08:00 @bugsnail 可以单独搞个类,不存数据库,类里存着就行了 |
21 wujunze 2017-05-27 17:55:08 +08:00 楼主可能需要这个 PHP 实现的枚举数据结构 https://github.com/myclabs/php-enum |
22 Fishdrowned 2017-05-27 22:31:17 +08:00 via Android 加前缀拼接,然后维护翻译文件,例如 order_status_0 => 待支付 / Pending order_status_1 => 已支付 / Paid |