Метод getDirty
Метод getDirty применяется к экземпляру модели Eloquent и возвращает массив атрибутов, которые были изменены, но еще не сохранены в базе данных. Метод не принимает параметров и возвращает ассоциативный массив, где ключами являются имена измененных полей, а значениями - новые данные. Если изменений нет, возвращается пустой массив.
Синтаксис
<?php
$model->getDirty();
?>
Пример
Давайте получим измененные атрибуты модели после изменения поля:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
$article->title = 'article';
$dirty = $article->getDirty();
echo "Измененные поля: ";
print_r($dirty);
}
}
?>
Результат выполнения кода:
"Измененные поля: Array ( [title] => article )"
Пример
Давайте проверим, что метод не возвращает изменения, если модель уже была синхронизирована с базой данных:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
$article->title = 'article';
$article->save();
$dirty = $article->getDirty();
if (empty($dirty)) {
echo "Изменений нет";
} else {
print_r($dirty);
}
}
}
?>
Результат выполнения кода:
"Изменений нет"
Пример
Давайте рассмотрим случай с несколькими измененными полями:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
$article->title = 'article';
$article->status = 'draft';
$dirty = $article->getDirty();
foreach ($dirty as $field => $value) {
echo "Поле: " . $field . ", значение: " . $value . "\n";
}
}
}
?>
Результат выполнения кода:
"Поле: title, значение: article"
"Поле: status, значение: draft"
Смотрите также
-
метод
isDirty,
который проверяет, были ли изменены атрибуты модели -
метод
wasChanged,
который проверяет изменения после сохранения -
метод
getOriginal,
который возвращает исходные значения атрибутов -
метод
getChanges,
который возвращает изменения после сохранения