我刚刚开始使用Yii 2 Framework进行开发,并安装了officially advanced app。
用户表的迁移脚本将“10”定义为“status”列的默认值。
'status' => $this->smallInteger()->notNull()->defaultValue(10),
我只是想知道为什么要使用它?
过去我分别使用boolean(true / false)0/1(在mssql中存储为smallint或bit)。
答案 0 :(得分:10)
查看common\modules\User
课程的内容。状态有两个常量:
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
不使用布尔类型,因为它假定使用多个状态(多于两个),不仅限于已删除和活动(在这种情况下,我们可以简单地使用布尔列is_active
或类似的东西)。
0
和10
用作边界值的种类,以便在将来添加其他常量。它也是一种极端状态,而其他是中间状态。
常量的实际值可能会有所不同,更重要的是一旦声明并且某些数据已经存在,您就不能简单地将其更改为其他值而无需数据迁移。
但是,如果您对这些值不满意,可以将其更改为0
,1
,并将其他人添加为2
,3
等等。
您也可以完全删除它并使列布尔值并将其重命名为is_active
,如前所述。
请记住 - 它只是一个模板,您可以根据自己的需要进行更改。