Метод 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,
который проверяет, не было ли изменений