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

时间:2015-11-11 14:45:33

标签: yii yii2 yii2-advanced-app yii-migrations

我刚刚开始使用Yii 2 Framework进行开发,并安装了officially advanced app

用户表的迁移脚本将“10”定义为“status”列的默认值。

'status' => $this->smallInteger()->notNull()->defaultValue(10),

我只是想知道为什么要使用它?

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

1 个答案:

答案 0 :(得分:10)

查看common\modules\User课程的内容。状态有两个常量:

const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;

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

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

常量的实际值可能会有所不同,更重要的是一旦声明并且某些数据已经存在,您就不能简单地将其更改为其他值而无需数据迁移。

但是,如果您对这些值不满意,可以将其更改为01,并将其他人添加为23等等。

您也可以完全删除它并使列布尔值并将其重命名为is_active,如前所述。

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