По сути, это свойство user.dirty
перед вами await user.save()
.
Чтобы узнать, какие атрибуты были / будут обновлены, вам нужно сравнить user.$attributes
и user.$originalAttributes
перед экземпляром модели пользователя saved()
. «Разница» сохраняется в свойстве user.dirty
после merge
.
Этот снимок экрана ниже был сделан до того, как я сделал merge()
, вы можете видеть, что user.$attributes
похоже на user.$originalAttributes
, а свойство user.dirty
пусто. (user.isDirty = false)
И этот снимок экрана был сделан после того, как я сделал merge()
. Пользователь first_name
будет обновлен (до 'имя ---- изменено'), а пользователь last_name
останется без изменений ('фамилия'), теперь вы можете видеть user.dirty = {first_name: 'first name --- changed'}
, он содержит ключ first_name
и его значение, которое будет обновлено. (user.isDirty = true)
Итак. Это:
const user = await User.findOrFail(1)
console.log('exists user', user)
user.merge({
first_name: 'first name --- updated',
last_name: 'last name'
})
console.log('user before updated', user)
const output = user.isDirty ? user.dirty : {} // {} mean no attributes will be updated
console.log('attribute that will be updated', output)
await user.save()
return output