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

Класс HasUuids

Класс HasUuids представляет собой трейт, который добавляет модели возможность автоматически генерировать UUID (Universally Unique Identifier) при создании новой записи. Трейт переопределяет метод bootHasUuids, который подписывается на событие creating модели и присваивает полю uuid уникальное значение. При использовании данного трейта необходимо, чтобы в таблице базы данных было поле типа uuid.

Синтаксис

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentConcernsHasUuids; class Article extends Model { use HasUuids; } ?>

Пример

Давайте создадим модель Article с использованием трейта HasUuids и добавим новую запись в базу данных:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentConcernsHasUuids; class Article extends Model { use HasUuids; protected $fillable = ['title', 'content']; } ?>
<?php use AppModelsArticle; $article = new Article(); $article->title = 'article'; $article->content = 'Lorem ipsum dolor sit amet'; $article->save(); echo $article->id; ?>

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

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

Пример

Трейт HasUuids позволяет переопределить поле, используемое для хранения UUID. По умолчанию это поле id. Давайте укажем, что UUID будет храниться в поле uuid:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; use IlluminateDatabaseEloquentConcernsHasUuids; class User extends Model { use HasUuids; protected $fillable = ['name', 'email']; public function uniqueIds() { return ['uuid']; } } ?>
<?php use AppModelsUser; $user = new User(); $user->name = 'John Doe'; $user->email = 'john@example.com'; $user->save(); echo $user->uuid; ?>

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

"f47ac10b-58cc-4372-a567-0e02b2c3d479"

Пример

При поиске записей по UUID можно использовать метод whereUuid, который автоматически добавляется трейтом. Давайте найдём статью по её UUID:

<?php use AppModelsArticle; $uuid = '550e8400-e29b-41d4-a716-446655440000'; $article = Article::whereUuid($uuid)->first(); echo $article ? $article->title : 'Article not found'; ?>

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

"article"

Пример

Трейт также добавляет метод whereUuidIn для поиска записей по нескольким UUID. Давайте найдём пользователей по списку UUID:

<?php use AppModelsUser; $uuids = [ 'f47ac10b-58cc-4372-a567-0e02b2c3d479', 'f47ac10b-58cc-4372-a567-0e02b2c3d480' ]; $users = User::whereUuidIn($uuids)->get(); foreach ($users as $user) { echo $user->name . PHP_EOL; } ?>

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

"John Doe" "Jane Smith"

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

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