Метод unsignedBigInteger
Метод unsignedBigInteger применяется в миграциях Laravel для создания столбца типа BIGINT UNSIGNED. Такой тип данных позволяет хранить целые числа от 0 до 18446744073709551615, что делает его идеальным для первичных ключей или внешних ключей, ссылающихся на поля с типом unsignedBigInteger. Метод вызывается на экземпляре Blueprint внутри метода up миграции и принимает один обязательный параметр - имя столбца.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->unsignedBigInteger('column_name');
});
?>
Пример
Давайте создадим таблицу 'orders' с полем 'user_id' типа unsignedBigInteger для связи с пользователем:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateOrdersTable extends Migration
{
public function up()
{
Schema::create('orders', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id');
$table->string('product_name');
$table->integer('quantity');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('orders');
}
}
?>
Результат выполнения миграции:
"Table orders created successfully"
Пример
Создадим внешний ключ с использованием unsignedBigInteger для связи таблиц:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddForeignKeyToOrdersTable extends Migration
{
public function up()
{
Schema::table('orders', function (Blueprint $table) {
$table->unsignedBigInteger('user_id')->constrained('users')->onDelete('cascade');
});
}
public function down()
{
Schema::table('orders', function (Blueprint $table) {
$table->dropForeign(['user_id']);
$table->dropColumn('user_id');
});
}
}
?>
Результат выполнения кода:
"Foreign key added to orders table"
Пример
Используем unsignedBigInteger для создания собственного первичного ключа:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateProductsTable extends Migration
{
public function up()
{
Schema::create('products', function (Blueprint $table) {
$table->unsignedBigInteger('product_id')->primary();
$table->string('name');
$table->decimal('price', 10, 2);
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('products');
}
}
?>
Результат выполнения кода:
"Table products created with custom primary key"
Смотрите также
-
метод
foreignId,
который является сокращением для создания внешнего ключа -
метод
unsignedInteger,
который создаёт беззнаковое 32-битное целое -
метод
bigInteger,
который создаёт знаковое 64-битное целое -
метод
id,
который создаёт первичный ключ с автоинкрементом