Метод smallInteger
Метод smallInteger применяется к схеме таблицы
в миграциях Laravel и создаёт столбец типа SMALLINT.
Диапазон значений зависит от используемой СУБД:
в MySQL это числа от -32768 до 32767, в PostgreSQL
от -32768 до +32767. Метод принимает один обязательный
параметр - имя столбца, и возвращает объект
ColumnDefinition для дальнейшей настройки.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->smallInteger('column_name');
});
?>
Пример
Давайте создадим таблицу товаров с полем для рейтинга:
<?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('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->smallInteger('rating')->default(0);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('products');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Пример
Давайте добавим поле для возраста пользователя с ограничением по значению:
<?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->smallInteger('age')->nullable();
});
}
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('age');
});
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Пример
Давайте создадим таблицу с несколькими smallInteger полями для хранения размеров товара:
<?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('sizes', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->smallInteger('width');
$table->smallInteger('height');
$table->smallInteger('depth')->default(0);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('sizes');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Смотрите также
-
метод
tinyInteger,
который создаёт столбец с ещё меньшим диапазоном -
метод
integer,
который создаёт стандартный целочисленный столбец -
метод
bigInteger,
который создаёт столбец с большим диапазоном значений -
метод
mediumInteger,
который создаёт столбец со средним диапазоном значений