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

Поле uuid

Метод uuid используется в миграциях Laravel для создания колонки типа UUID (Universally Unique Identifier). UUID представляет собой 128-битный идентификатор, который гарантирует уникальность в пределах всей системы. В базах данных UUID обычно хранится как строка из 36 символов в формате 8-4-4-4-12. В отличие от автоинкрементных идентификаторов, UUID позволяет генерировать уникальные значения на уровне приложения без обращения к базе данных.

Синтаксис

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

Пример

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

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('articles', function (Blueprint $table) { $table->uuid('id')->primary(); $table->string('title'); $table->text('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('articles'); } }; ?>

Пример

Создадим модель и будем автоматически генерировать UUID при создании новой записи:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; class Article extends Model { protected $keyType = 'string'; public $incrementing = false; protected static function boot() { parent::boot(); static::creating(function ($model) { if (empty($model->id)) { $model->id = Str::uuid()->toString(); } }); } } ?>

Пример

Используем встроенный трейт HasUuids для автоматической генерации UUID в модели:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Concerns\HasUuids; class Article extends Model { use HasUuids; public $incrementing = false; protected $keyType = 'string'; } ?>

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

<?php namespace App\Http\Controllers; use App\Models\Article; class ArticleController extends Controller { public function store() { $article = new Article(); $article->title = 'article 1'; $article->content = 'content 1'; $article->save(); echo $article->id; } } ?>

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

"550e8400-e29b-41d4-a716-446655440000"

Пример

Создадим внешний ключ, ссылающийся на UUID колонку в другой таблице:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->uuid('article_id'); $table->text('content'); $table->timestamps(); $table->foreign('article_id') ->references('id') ->on('articles') ->onDelete('cascade'); }); } public function down() { Schema::dropIfExists('comments'); } }; ?>

Пример

Используем метод foreignUuid для создания внешнего ключа на UUID колонку:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->foreignUuid('article_id') ->constrained('articles') ->onDelete('cascade'); $table->text('content'); $table->timestamps(); }); } public function down() { Schema::dropIfExists('comments'); } }; ?>

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

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