unsignedSmallInteger
Метод unsignedSmallInteger применяется внутри метода up класса миграции для создания столбца, который хранит целые числа от 0 до 65535. Этот тип данных полезен для хранения небольших числовых значений, например, возраста пользователя, количества товаров, рейтингов или других ограниченных по диапазону данных. В отличие от smallInteger, который допускает отрицательные значения, unsignedSmallInteger гарантирует, что в столбце будут только положительные числа.
Синтаксис
Базовый синтаксис метода в миграции:
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::create('table_name', function (Blueprint $table) {
$table->unsignedSmallInteger('column_name');
});
?>
Метод принимает один обязательный параметр - имя столбца. Дополнительные настройки могут быть добавлены через цепочку методов.
Пример
Создадим таблицу 'users' с полем 'age' типа unsigned small integer для хранения возраста пользователя:
<?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->unsignedSmallInteger('age');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('users');
}
};
?>
Пример
Добавим столбец 'rating' в существующую таблицу 'products' со значением по умолчанию:
<?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('products', function (Blueprint $table) {
$table->unsignedSmallInteger('rating')->default(0);
});
}
public function down(): void
{
Schema::table('products', function (Blueprint $table) {
$table->dropColumn('rating');
});
}
};
?>
Результат выполнения команды миграции:
"Migration completed successfully"
Пример
Создадим таблицу 'orders' с полем 'quantity', установив ограничение на допустимые значения через nullable и default:
<?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('orders', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
$table->unsignedSmallInteger('quantity')->nullable()->default(1);
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('orders');
}
};
?>
Смотрите также
-
метод
unsignedTinyInteger,
который создаёт столбец для чисел от 0 до 255 -
метод
unsignedInteger,
который создаёт столбец для чисел от 0 до 4294967295 -
метод
smallInteger,
который создаёт столбец для чисел от -32768 до 32767 -
метод
index,
который добавляет индекс для ускорения выборки по столбцу