Метод refresh
Метод refresh применяется к экземпляру модели Eloquent
и обновляет его свойства, загружая актуальные данные
из базы данных. Это полезно, когда после изменения
модели в коде или в базе данных другими процессами,
нужно получить свежую версию объекта. Метод возвращает
ту же модель с обновлёнными атрибутами.
Синтаксис
<?php
$model->refresh();
?>
Пример
Давайте получим статью из базы данных, изменим её название и затем обновим модель, чтобы вернуть исходное значение:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(1);
echo $article->title;
$article->title = 'New title';
echo $article->title;
$article->refresh();
echo $article->title;
}
}
?>
Результат выполнения кода:
"Article 1"
"New title"
"Article 1"
В этом примере после вызова refresh модель загрузила
исходное название из базы данных, отменив локальное изменение.
Пример
Давайте покажем, как refresh работает при изменении
записи в базе данных другим процессом:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use AppModelsUser;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(2);
echo $article->views;
$user = User::find(1);
$user->articles()->increment('views');
$article->refresh();
echo $article->views;
}
}
?>
Результат выполнения кода:
"10"
"11"
Здесь после обновления количества просмотров через связь,
вызов refresh загрузил актуальное значение из БД.
Пример
Используем refresh после сохранения модели
для получения всех изменённых значений, включая
автоматически вычисляемые поля:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
class ArticleController extends Controller
{
public function index()
{
$article = Article::find(3);
echo $article->updated_at;
sleep(2);
$article->title = 'Updated title';
$article->save();
$article->refresh();
echo $article->updated_at;
}
}
?>
Результат выполнения кода:
"2026-09-07 10:30:15"
"2026-09-07 10:30:17"
После сохранения модели автоматически обновляются
временные метки. Вызов refresh загружает
эти новые значения из базы данных.