status 使用 varchar 的考虑?

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

一入php深似海,从此c++是路人
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
leo
最佳答案

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

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

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

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

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

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

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

6年前 评论
ibucoin

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

6年前 评论

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

6年前 评论

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

6年前 评论
黑哈尔

现在好像支持 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('商品类型');
        });
5年前 评论

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