仅获取修改后的值
Get only modified values
我正在更新模型,需要 return 仅更改已更改的值。
const data = request.only(['name', 'email', 'address', 'age'])
const user = await user.findOrFail(data.id)
user.merge({ nome: data.name, email: data.email, endereco: data.address, age: data.age })
await user.save()
merge
什么都没有 return 那么我该怎么做呢?
基本上,它 user.dirty
属性 在你之前 await user.save()
。
要知道哪些属性已经/将要更新,您需要比较用户模型实例 saved()
之前的 user.$attributes
和 user.$originalAttributes
。在 merge
之后 'difference' 存储在 user.dirty
属性 中。
下面这个截图是我做merge()
之前截的,可以看到user.$attributes
和user.$originalAttributes
类似,user.dirty
属性是空的. (user.isDirty = 假)
这张截图是我merge()
之后拍的。用户 first_name
将被更新(至 'first name ---- changed'),而用户 last_name
将保持不变('last name'),您现在可以看到 user.dirty = {first_name: 'first name --- changed'}
,它包含 first_name
键及其待更新的值。 (user.isDirty = 真)
所以。它是:
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
我正在更新模型,需要 return 仅更改已更改的值。
const data = request.only(['name', 'email', 'address', 'age'])
const user = await user.findOrFail(data.id)
user.merge({ nome: data.name, email: data.email, endereco: data.address, age: data.age })
await user.save()
merge
什么都没有 return 那么我该怎么做呢?
基本上,它 user.dirty
属性 在你之前 await user.save()
。
要知道哪些属性已经/将要更新,您需要比较用户模型实例 saved()
之前的 user.$attributes
和 user.$originalAttributes
。在 merge
之后 'difference' 存储在 user.dirty
属性 中。
下面这个截图是我做merge()
之前截的,可以看到user.$attributes
和user.$originalAttributes
类似,user.dirty
属性是空的. (user.isDirty = 假)
这张截图是我merge()
之后拍的。用户 first_name
将被更新(至 'first name ---- changed'),而用户 last_name
将保持不变('last name'),您现在可以看到 user.dirty = {first_name: 'first name --- changed'}
,它包含 first_name
键及其待更新的值。 (user.isDirty = 真)
所以。它是:
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