Функция getChanges()
возвращает измененные поля модели после сохранения:
public function testGetChanges() { AnyModel::create([ 'name' => 'Test', 'content' => 'any text ...', ]); $model = AnyModel::first(); $model->name = 'New test'; $model->save(); $this->assertEquals($model->getChanges(), ['name' => 'New test']);
После следующего обновления getChanges
удаляет предыдущие изменения и выводит новые:
$model->name = 'Test2'; $model->update(); $this->assertEquals($model->getChanges(), ['name' => 'Test2']); }
Функция getOriginal()
возвращает все поля в неизменном виде до сохранения:
public function testGetOriginal() { AnyModel::create([ 'name' => 'Test', 'content' => 'any text ...', ]); $model = AnyModel::first(); $model->name = 'New test'; $this->assertEquals($model->getOriginal('name'), 'Test'); $model->save();
После сохранения метод getOriginal
возвращает новые значения:
$this->assertEquals($model->getOriginal('name'), 'New test'); }
Метод getOriginal()
по умолчанию возвращает все поля модели, если вам нужно только одно, используйте getOriginal('field_name')
. Для работы только с измененными полями можно сделать примерно так:
foreach ($model->getChanges() as $key => $value) { $originals[$key] = $model->getOriginal($key); }
В итоге массив $originals
будет содержать оригинальные значения измененных полей. Разумеется, это работает только до сохранения.