status 使用 varchar 的考虑?

之前有看到有关status这类是用tinyInt还是Enum的文章讨论,那么这个课程里面的状态量用varchar是基于什么考虑的?真实开发电商类的话,varchar是否足够了?

一入php深似海,从此c++是路人
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
leo
最佳答案

其实我是建议在真实项目中用 Enum 的。

Laravel 的迁移功能是基于 Doctrine 的,而 Doctrine 没有提供对 Enum 的直接支持,在创建 Enum 字段的时候没有走 Doctrine 倒还好,当要修改 Enum 字段就会需要用到一些比较取巧的方法。

而我们课程中不会出现修改 Enum 字段的内容,这就导致只教了大家怎么创建 Enum 字段,却没有告诉大家怎么修改 Enum 字段,这样就会给大家留下一个坑。

5年前 评论
讨论数量: 5
leo

其实我是建议在真实项目中用 Enum 的。

Laravel 的迁移功能是基于 Doctrine 的,而 Doctrine 没有提供对 Enum 的直接支持,在创建 Enum 字段的时候没有走 Doctrine 倒还好,当要修改 Enum 字段就会需要用到一些比较取巧的方法。

而我们课程中不会出现修改 Enum 字段的内容,这就导致只教了大家怎么创建 Enum 字段,却没有告诉大家怎么修改 Enum 字段,这样就会给大家留下一个坑。

5年前 评论
ibucoin

@leo 了解了,那么修改enum的话,还是得写原生sql来改了。

5年前 评论

enum ,在数据库底层还是用tinyint 来存的哦 ,但enum 会存在扩展性的问题

5年前 评论

@leo 在 Laravel 使用 Enum 的正确姿势是怎么样的?

5年前 评论
黑哈尔

现在好像支持 enum 了。
6.x 文档里面有 创建字段

我是这么写的:

        Schema::table('products', function (Blueprint $table) {
            $table->enum('type', array_keys(\App\Models\Product::$typeMap))->after('id')->default(\App\Models\Product::TYPE_NORMAL)->index()->comment('商品类型');
        });
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!