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

Поле foreignUlid

Метод foreignUlid используется для создания внешнего ключа, который ссылается на поле типа ULID в другой таблице. По умолчанию он создаёт столбец с именем, образованным от названия связанной таблицы и суффикса _ulid. Первым параметром передаётся имя целевой таблицы, вторым - имя столбца (опционально). Если второй параметр не указан, Laravel автоматически генерирует имя столбца.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->foreignUlid($tableName, $column); }); ?>

Пример использования

Создадим таблицу posts с внешним ключом user_ulid, ссылающимся на таблицу users:

<?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('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('body'); $table->foreignUlid('users', 'user_ulid') ->constrained() ->cascadeOnDelete(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); } }; ?>

Пример с автоматическим именованием

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

<?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('comments', function (Blueprint $table) { $table->id(); $table->text('content'); $table->foreignUlid('posts') ->constrained() ->nullOnDelete(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('comments'); } }; ?>

Использование в модели

Пример модели, где для внешнего ключа используется тип данных string, но можно использовать и трейт для работы с ULID:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $fillable = ['title', 'body', 'user_ulid']; public function user() { return $this->belongsTo(User::class, 'user_ulid', 'ulid'); } } ?>

Результат выполнения запроса на получение постов с пользователями:

["Post 1 (User: John)", "Post 2 (User: Jane)"]

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

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