INTEGER в Yii2. Управляем созданием поля этого типа используя механизм миграций

Эта статья из цикла по типам полей в БД через миграции Yii2. Список статей из этого цикла:

  1. ENUM
  2. INTEGER
  3. VARCHAR
  4. DATETIME
  5. TIMESTAMP
  6. FLOAT

Добавление поля типа INTEGER и уставновление для него аттрибутов

Процесс создания миграции в этой и последующих заметках этого цикла, рассматриваться не будет. Он уже достаточно хорошо описан здесь и еще немного здесь.

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

Добавляется это поле посредством метода $this->integer()

        $this->createTable('tableName', [
            ...
            'user_id' => $this->integer(),
            ...
        ]);

Это равносильно такому SQL запросу:

`user_id` int(11) DEFAULT NULL,

Вроде бы все устраивает, но теперь возникла необходимость убедиться в том, что в этом поле будут только положительные числа. В таком случае это поле в нашей миграции должно иметь такой вид:

        $this->createTable('tableName', [
            ...
            'user_id' => $this->integer()->unsigned(),
            ...
        ]);

Обратите внимание на метод unsigned(). Именно он задаст нужное значение аттрибута поля user_id. Также, если нам надо уменьшить кол-во цифр в этом поле, мы просто допишем необходимое кол-во:

        $this->createTable('tableName', [
            ...
            'user_id' => $this->integer(5)->unsigned(),
            ...
        ]);

Если нам понадобилось установить для этого поля какое-то значение по-умолчанию (только положительные значения), это делается также легко, как и предыдущие манипуляции:

        $this->createTable('tableName', [
            ...
            'user_id' => $this->integer(5)->defaultValue(3)->unsigned(),
            ...
        ]);

Пока на этом все.