Метод getOriginal
Метод getOriginal применяется к экземпляру модели Eloquent
и возвращает исходные значения атрибутов, которые были загружены
из базы данных, до того как они были изменены в коде. Если передать
имя атрибута первым параметром, метод вернёт исходное значение
конкретного поля. Вторым параметром можно передать значение по умолчанию,
которое будет возвращено, если атрибут отсутствует в исходных данных.
Синтаксис
<?php
$model->getOriginal($key, $default);
?>
Пример
Давайте получим исходное значение поля 'name' после его изменения:
<?php
use AppModelsUser;
$user = User::find(1);
echo $user->name; // "John"
$user->name = 'Mike';
echo $user->name; // "Mike"
$originalName = $user->getOriginal('name');
echo $originalName; // "John"
?>
Результат выполнения кода:
"John"
"Mike"
"John"
Пример
Давайте получим все исходные атрибуты модели в виде массива:
<?php
use AppModelsArticle;
$article = Article::find(1);
$article->title = 'New Title';
$article->status = 'draft';
$original = $article->getOriginal();
print_r($original);
?>
Результат выполнения кода:
[
"id" => 1,
"title" => "Old Title",
"status" => "published",
"created_at" => "2024-01-01 10:00:00",
"updated_at" => "2024-01-01 10:00:00"
]
Пример
Давайте используем значение по умолчанию, если атрибут отсутствует:
<?php
use AppModelsUser;
$user = User::find(1);
$res = $user->getOriginal('non_existent_field', 'default_value');
echo $res;
?>
Результат выполнения кода:
"default_value"
Пример
Давайте сравним исходное и изменённое значения с помощью метода isDirty:
<?php
use AppModelsArticle;
$article = Article::find(1);
$article->title = 'New Title';
$res = [
'original' => $article->getOriginal('title'),
'current' => $article->title,
'is_dirty' => $article->isDirty('title')
];
print_r($res);
?>
Результат выполнения кода:
[
"original" => "Old Title",
"current" => "New Title",
"is_dirty" => true
]
Смотрите также
-
метод
isDirty,
который проверяет, были ли изменены атрибуты модели -
метод
getChanges,
который возвращает массив изменённых атрибутов -
метод
fresh,
который перезагружает модель из базы данных -
метод
refresh,
который обновляет текущий экземпляр модели из базы данных