РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
102 of 1392 menu

Поле ulid

Метод ulid применяется в миграциях Laravel для создания колонки, которая будет хранить уникальные идентификаторы в формате ULID. ULID (Universally Unique Lexicographically Sortable Identifier) представляет собой 26-символьную строку, состоящую из 48 бит временной метки и 80 бит случайных данных. В отличие от UUID, ULID генерируется в лексикографическом порядке, что делает его идеальным для использования в качестве первичного ключа, особенно при работе с большими объемами данных.

Метод ulid автоматически создает колонку типа CHAR(26) с кодировкой BINARY для обеспечения оптимальной производительности. При использовании в качестве первичного ключа, Laravel автоматически будет генерировать ULID значения для новых записей, если в модели используется трейт HasUlids.

Метод принимает один обязательный параметр - имя колонки, и дополнительные модификаторы для настройки поведения колонки.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->ulid('column_name'); }); ?>

Метод возвращает объект ColumnDefinition, что позволяет применять дополнительные модификаторы, такие как nullable, default, unique и другие.

Пример

Давайте создадим миграцию для таблицы posts с колонкой ulid в качестве первичного ключа:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->ulid('id')->primary(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); } }; ?>

Пример

Создадим модель Post с трейтом HasUlids для автоматической генерации ULID при создании записи:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentConcernsHasUlids; class Post extends Model { use HasUlids; protected $fillable = ['title', 'content']; } ?>

Теперь при создании новой записи ULID будет генерироваться автоматически:

<?php use AppModelsPost; $post = Post::create([ 'title' => 'My First Post', 'content' => 'This is the content of my first post.' ]); echo $post->id; ?>

Результат выполнения кода:

"01H8X3Q4R8Y2Z5K7M9N1P3T6W"

Пример

Добавим колонку ulid в существующую таблицу users с ограничением уникальности:

<?php use IlluminateDatabaseMigrationsMigration; use IlluminateDatabaseSchemaBlueprint; use IlluminateSupportFacadesSchema; return new class extends Migration { public function up(): void { Schema::table('users', function (Blueprint $table) { $table->ulid('ulid')->unique()->nullable(); }); } public function down(): void { Schema::table('users', function (Blueprint $table) { $table->dropColumn('ulid'); }); } }; ?>

После выполнения миграции можно использовать ULID для поиска пользователей:

<?php use AppModelsUser; $ulid = '01H8X3Q4R8Y2Z5K7M9N1P3T6W'; $user = User::where('ulid', $ulid)->first(); if ($user) { echo $user->name; } ?>

Смотрите также

  • поле uuid,
    которое создает колонку для UUID идентификаторов
  • поле id,
    которое создает колонку для автоинкрементных идентификаторов
  • трейт HasUlids,
    который автоматически генерирует ULID для моделей
  • метод default,
    который устанавливает значение по умолчанию для колонки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить