men*_*oft 3 php laravel laravel-5.6
我使用了laravel 5.6,并使用该updateOrCreate模型添加或更新了一些数据。
但是我需要获取所有已更改的值
$q=Userssub::updateOrCreate(
['userid' => $uid ],
['model' => $model]
);
Run Code Online (Sandbox Code Playgroud)
结果显示如下图所示

如何获取更改数组?
我试图与
$u->changes
Run Code Online (Sandbox Code Playgroud)
和
$u->changes->toarray()
Run Code Online (Sandbox Code Playgroud)
但都返回null。
如何获得更改的值?
kej*_*ion 13
这将创建一个包含原始属性值及其更改内容的数组:
if (!$model->wasRecentlyCreated) {
$original = $model->getOriginal();
$changes = [];
foreach ($model->getChanges() as $key => $value) {
$changes[$key] = [
'original' => $original[$key],
'changes' => $value,
];
}
}
Run Code Online (Sandbox Code Playgroud)
例如
(
[first_name] => [
[original] => Kevinn
[changes] => Kevin
]
[website] => [
[original] => google.com
[changes] => google.ca
]
)
Run Code Online (Sandbox Code Playgroud)
雄辩的模型有两个受保护的数组,$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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3299 次 |
| 最近记录: |