Laravel 5.6 - 在 updateOrCreate 之后获取更改的值
Laravel 5.6 - get changed values after updateOrCreate
我已经使用了laravel 5.6并使用了updateOrCreate
模型添加或更新了一些数据。
但我需要获取所有更改的值
$q=Userssub::updateOrCreate(
['userid' => $uid ],
['model' => $model]
);
结果如图所示
如何获取更改数组?
我试着用
得到它
$u->changes
和
$u->changes->toarray()
但两者 return 都为空。
我该怎么做才能获得更改后的值?
Eloquent 模型有两个受保护的数组,$original
和 $changes
,它们分别包含从存储中获取时的属性和已修改的属性。
因此您可以使用 getOriginal()
和 getChanges()
并比较差异。
$model = Model::createOrUpdate([...]);
// wasRecentlyCreated is a boolean indicating if the model was inserted during the current request lifecycle.
if (!$model->wasRecentlyCreated) {
$changes = $model->getChanges();
}
这将创建一个数组,其中将包含原始属性值及其更改后的内容:
if (!$model->wasRecentlyCreated) {
$original = $model->getOriginal();
$changes = [];
foreach ($model->getChanges() as $key => $value) {
$changes[$key] = [
'original' => $original[$key],
'changes' => $value,
];
}
}
例如
(
[first_name] => [
[original] => Kevinn
[changes] => Kevin
]
[website] => [
[original] => google.com
[changes] => google.ca
]
)
我已经使用了laravel 5.6并使用了updateOrCreate
模型添加或更新了一些数据。
但我需要获取所有更改的值
$q=Userssub::updateOrCreate(
['userid' => $uid ],
['model' => $model]
);
结果如图所示
如何获取更改数组?
我试着用
$u->changes
和
$u->changes->toarray()
但两者 return 都为空。
我该怎么做才能获得更改后的值?
Eloquent 模型有两个受保护的数组,$original
和 $changes
,它们分别包含从存储中获取时的属性和已修改的属性。
因此您可以使用 getOriginal()
和 getChanges()
并比较差异。
$model = Model::createOrUpdate([...]);
// wasRecentlyCreated is a boolean indicating if the model was inserted during the current request lifecycle.
if (!$model->wasRecentlyCreated) {
$changes = $model->getChanges();
}
这将创建一个数组,其中将包含原始属性值及其更改后的内容:
if (!$model->wasRecentlyCreated) {
$original = $model->getOriginal();
$changes = [];
foreach ($model->getChanges() as $key => $value) {
$changes[$key] = [
'original' => $original[$key],
'changes' => $value,
];
}
}
例如
(
[first_name] => [
[original] => Kevinn
[changes] => Kevin
]
[website] => [
[original] => google.com
[changes] => google.ca
]
)