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

Атрибут incrementing

Атрибут incrementing в моделях Eloquent контролирует поведение автоинкремента для первичного ключа. По умолчанию этот атрибут имеет значение true, что означает, что при создании новой записи значение первичного ключа будет автоматически увеличено на единицу. Если вы используете нечисловые ключи или управляете значением ключа вручную, этот атрибут следует установить в false.

Атрибут объявляется в классе модели как защищённое свойство. Он влияет на работу методов save, create, updateOrCreate и других, которые создают новые записи в базе данных. Когда incrementing равен true, Eloquent автоматически присваивает полю первичного ключа следующее доступное значение из последовательности базы данных.

Синтаксис

<?php class Model extends Model { protected $incrementing = true; // или false } ?>

Пример

Рассмотрим модель с автоинкрементом по умолчанию:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { // Атрибут incrementing по умолчанию равен true protected $incrementing = true; } ?>

При создании новой статьи ID будет установлен автоматически:

<?php use AppModelsArticle; $article = new Article(); $article->title = 'abcde'; $article->text = 'content text'; $article->save(); echo $article->id; ?>

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

"1"

Пример

Рассмотрим модель с отключённым автоинкрементом для использования UUID-ключей:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Product extends Model { protected $incrementing = false; protected $keyType = 'string'; } ?>

При создании товара мы должны явно указать значение первичного ключа:

<?php use AppModelsProduct; use IlluminateSupportStr; $product = new Product(); $product->id = Str::uuid(); $product->title = 'category'; $product->price = 100; $product->save(); echo $product->id; ?>

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

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

Пример

Рассмотрим модель с нестандартным числовым ключом, который мы управляем вручную:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Category extends Model { protected $incrementing = false; // Можно также указать тип ключа protected $keyType = 'int'; } ?>

При создании категории мы сами задаём значение ID:

<?php use AppModelsCategory; $category = new Category(); $category->id = 1001; $category->name = 'user'; $category->save(); echo $category->id; ?>

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

"1001"

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

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