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

Метод withoutTimestamps

Метод withoutTimestamps применяется к экземпляру модели Eloquent и позволяет выполнить операцию сохранения или обновления без автоматической установки значений в поля created_at и updated_at. Это полезно, когда необходимо сохранить данные, но оставить временные метки без изменений, например, при импорте старых данных или обновлении записей без изменения времени последнего изменения.

Метод принимает замыкание (callback) в качестве единственного аргумента. Внутри замыкания выполняются все операции с моделью, при этом автоматическое обновление временных меток отключается только на время выполнения этого замыкания. После завершения работы замыкания поведение модели восстанавливается.

Важно отметить, что withoutTimestamps не отключает поля временных меток полностью, а лишь предотвращает их автоматическое обновление. Если вы явно укажете значения для created_at или updated_at внутри замыкания, эти значения будут сохранены.

Синтаксис

<?php $model->withoutTimestamps(function () { // Операции без обновления меток }); ?>

Пример

Давайте обновим статью, не изменяя поле updated_at:

<?php use AppModelsArticle; $article = Article::find(1); $article->withoutTimestamps(function () use ($article) { $article->title = 'New title'; $article->save(); }); echo $article->title . ' updated_at: ' . $article->updated_at; ?>

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

"New title updated_at: 2024-01-15 10:00:00"

Пример

Выполним массовое обновление нескольких записей без изменения временных меток:

<?php use AppModelsArticle; $articles = Article::where('status', 'draft')->get(); foreach ($articles as $article) { $article->withoutTimestamps(function () use ($article) { $article->status = 'archived'; $article->save(); }); } echo count($articles) . ' articles updated'; ?>

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

"5 articles updated"

Пример

Используем метод withoutTimestamps с методом update для обновления нескольких полей:

<?php use AppModelsArticle; $article = Article::find(2); $article->withoutTimestamps(function () use ($article) { $article->update([ 'title' => 'Updated title', 'content' => 'New content' ]); }); echo 'Title: ' . $article->title . ' updated_at: ' . $article->updated_at; ?>

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

"Title: Updated title updated_at: 2024-01-15 10:00:00"

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

  • метод touch,
    который принудительно обновляет временные метки модели
  • метод saveQuietly,
    который сохраняет модель без запуска событий
  • метод update,
    который обновляет модель в базе данных
  • атрибут timestamps,
    который включает или отключает временные метки для модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить