Yii2, почему используется константа состояния 10 вместо 1?

Я только начинаю разработку с помощью Yii 2 Framework и установил официально расширенное приложение.

Сценарий переноса пользовательской таблицы определяет "10" как значение по умолчанию для столбца "статус".

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

Мне просто интересно, почему они это используют?

В прошлом я использовал логическое значение (true/false) соответственно 0/1 (хранится как smallint или бит в mssql).


person mfgmicha    schedule 11.11.2015    source источник
comment
Какой скрипт миграции и где?   -  person Ali MasudianPour    schedule 11.11.2015
comment
Это скорее о том, почему понятие с '10' вместо '1', чем о точной миграции. Но, к вашему сведению, сценарий миграции — это «console\migrations\m130524_201442_init.php».   -  person mfgmicha    schedule 11.11.2015


Ответы (1)


Взгляните на содержимое класса common\modules\User. Есть две константы для статусов:

const STATUS_DELETED = 0;
const STATUS_ACTIVE = 10;

Булев тип не используется, поскольку предполагает использование нескольких статусов (более двух), не ограничиваясь только удаленным и активным (в этом случае мы можем просто иметь булев столбец is_active или что-то в этом роде).

0 и 10 используются как своего рода граничные значения для добавления других констант между ними в будущем. Также это своего рода крайние состояния, тогда как другие являются промежуточными.

Фактические значения констант могут различаться, тем более важно, что когда они объявлены и некоторые данные уже существуют, вы не можете просто изменить их на другое значение без переноса данных.

Но если вас не устраивают эти значения, вы можете изменить их на 0, 1 и добавить другие как 2, 3 и так далее.

Вы также можете полностью удалить его и сделать столбец логическим и переименовать его в is_active, как я уже говорил.

Помните - это всего лишь шаблон, вы можете изменить его под свои нужды.

person arogachev    schedule 12.11.2015
comment
Спасибо за информативный ответ. Чтобы было ясно, я не возражаю против использования этих значений, просто интересно, почему они используются именно так (10 вместо 1). Если я хочу добавить третье значение, будет ли лучше (логически придерживаться этого шаблона) использовать значение от 0 до 10 или использовать 20? - person mfgmicha; 12.11.2015