Yii2为什么使用状态常量10而不是1?

mfg*_*cha 3 yii yii2 yii2-advanced-app yii-migrations

我刚刚开始使用Yii 2 Framework进行开发,并安装了官方高级应用程序.

用户表的迁移脚本将"10"定义为列"status" 的默认值.

'status' => $this->smallInteger()->notNull()->defaultValue(10),
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么他们使用这个?

在过去,我分别使用boolean(true/false)0/1(在mssql中存储为smallint或bit).

aro*_*hev 10

看看common\modules\User上课的内容.状态有两个常量:

const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
Run Code Online (Sandbox Code Playgroud)

不使用布尔类型,因为它假定使用多个状态(超过两个),不仅限于已删除和活动(在这种情况下,我们可以简单地使用布尔列is_active或类似的东西).

010被用作一种边界值,以在将来添加其他常量之间.它也是一种极端状态,而其他是中间状态.

常量的实际值可以变化,更重要的是一旦声明并且某些数据已经存在,您不能简单地将其更改为没有数据迁移的其他值.

但是,如果你不满足于这些值,你可以把它改成0,1并添加其他的2,3等等.

您也可以完全删除它并使列布尔值并将其重命名is_active为我之前说过的.

请记住 - 它只是一个模板,您可以根据自己的需要进行更改.

  • 感谢您提供丰富的答案.要清楚,我不介意使用这些值,只是想知道为什么这样使用它们(10而不是1).如果我想添加第三个值,那么使用0到10之间的值或使用20会更好(逻辑上坚持使用该模板)吗? (3认同)