Поле tinyInteger
Метод tinyInteger применяется в миграциях Laravel для создания столбца типа TINYINT. Первым параметром передаётся имя колонки, вторым - длина (по умолчанию 4). Метод возвращает объект ColumnDefinition, который позволяет использовать дополнительные модификаторы, такие как nullable, default, unsigned и другие. TINYINT занимает 1 байт и может хранить значения от -128 до 127 (или от 0 до 255 для беззнакового типа).
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->tinyInteger('column_name');
});
?>
Пример
Давайте создадим таблицу 'users' с полем 'age' типа TINYINT:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->tinyInteger('age');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('users');
}
};
?>
Результат выполнения миграции:
"Migration table created successfully."
"Migrating: 2026_01_01_000000_create_users_table"
"Migrated: 2026_01_01_000000_create_users_table (0.05 seconds)"
Пример
Создадим поле 'status' типа TINYINT с модификаторами, которое будет хранить статус пользователя:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->tinyInteger('status')
->default(1)
->nullable(false)
->comment('User status: 0 - inactive, 1 - active, 2 - blocked');
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('status');
});
}
};
?>
Результат выполнения миграции:
"Migration table created successfully."
"Migrating: 2026_01_01_000001_add_status_to_users_table"
"Migrated: 2026_01_01_000001_add_status_to_users_table (0.03 seconds)"
Пример
Создадим беззнаковое поле 'attempts' типа TINYINT для хранения количества попыток входа:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->unsignedTinyInteger('attempts')
->default(0)
->nullable(true);
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('attempts');
});
}
};
?>
Результат выполнения миграции:
"Migration table created successfully."
"Migrating: 2026_01_01_000002_add_attempts_to_users_table"
"Migrated: 2026_01_01_000002_add_attempts_to_users_table (0.04 seconds)"
Смотрите также
-
поле
unsignedTinyInteger,
которое создаёт беззнаковое целочисленное поле -
поле
smallInteger,
которое создаёт поле типа SMALLINT -
поле
integer,
которое создаёт поле типа INTEGER -
метод
nullable,
который позволяет полю принимать значение NULL