我刚开始使用 Yii 2 框架进行开发,并安装了 officially advanced app .
用户表的迁移脚本将“10”定义为“状态”列的默认值。
'status' => $this->smallInteger()->notNull()->defaultValue(10),
我只是想知道他们为什么使用这个?
过去我分别使用 bool 值 (true/false) 0/1(在 mssql 中存储为 smallint 或 bit)。
最佳答案
看看 common\modules\User
类的内容。状态有两个常量:
const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;
不使用 bool 类型,因为它假定使用多个状态(超过两个),不仅限于已删除和事件(在这种情况下,我们可以简单地使用 bool 列 is_active
或类似的那个)。
0
和 10
用作一种边界值,以便将来在其间添加其他常量。也是一种极端的状态,而其他的都是中间状态。
常量的实际值可以变化,更重要的是一旦它被声明并且一些数据已经存在,你不能简单地将它更改为另一个值而不进行数据迁移。
但是如果你对这些值不满意,你可以把它改成0
,1
,其他的加成2
,3
以此类推。
您也可以完全删除它并将列设为 bool 值并将其重命名为 is_active
正如我之前所说的。
请记住 - 它只是一个模板,您可以根据需要对其进行更改。
关于Yii2 为什么使用状态常量 10 而不是 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33653000/