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

Метод wasChanged

Метод wasChanged применяется к экземпляру модели Eloquent и позволяет определить, было ли изменено указанное поле (или поля) в процессе последней операции сохранения. Он возвращает true, если поле было изменено, и false - в противном случае. В отличие от метода isDirty, который проверяет изменения до сохранения, wasChanged анализирует изменения после того, как модель была сохранена в базе данных. Первым параметром передаётся имя поля или массив полей для проверки.

Синтаксис

<?php $model->wasChanged($field); ?>

Пример

Давайте проверим, было ли изменено поле 'status' после сохранения модели Article:

<?php use AppModelsArticle; $article = Article::find(1); $article->status = 'published'; $article->save(); $res = $article->wasChanged('status'); echo $res; ?>

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

"true"

Пример

Давайте проверим несколько полей одновременно, передав массив:

<?php use AppModelsArticle; $article = Article::find(1); $article->status = 'published'; $article->title = 'article'; $article->save(); $res = $article->wasChanged(['status', 'title']); echo $res; ?>

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

"true"

Пример

Если поле не было изменено, метод вернёт false:

<?php use AppModelsArticle; $article = Article::find(1); $article->status = 'draft'; $article->save(); $res = $article->wasChanged('title'); echo $res; ?>

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

"false"

Пример

Метод wasChanged полезен при работе с событиями модели, например, в событии saved:

<?php namespace AppModels; use IlluminateDatabaseEloquentModel; class Article extends Model { protected static function booted() { static::saved(function ($article) { if ($article->wasChanged('status')) { // Логика при изменении статуса } }); } } ?>

Пример

Метод можно использовать для проверки изменений в отношениях или для выполнения дополнительных действий после сохранения:

<?php use AppModelsArticle; $article = Article::find(1); $article->status = 'archived'; $article->save(); if ($article->wasChanged('status')) { echo 'article status updated'; } ?>

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

"article status updated"

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

  • метод isDirty,
    который проверяет изменения до сохранения модели
  • метод getOriginal,
    который возвращает исходные значения полей
  • метод getChanges,
    который возвращает все изменённые поля
  • метод isClean,
    который проверяет, не было ли изменений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить