首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Laravel 5.6 -在updateOrCreate之后获取更改的值

Laravel 5.6 -在updateOrCreate之后获取更改的值
EN

Stack Overflow用户
提问于 2018-06-26 01:30:51
回答 2查看 12.3K关注 0票数 8

我使用了laravel 5.6,并使用updateOrCreate模型添加或更新了一些数据。

但我需要获取所有更改过的值

代码语言:javascript
复制
$q=Userssub::updateOrCreate(
    ['userid' => $uid  ],
    ['model'  => $model]
);

结果如下图所示

如何获取更改数组?

我试着用

代码语言:javascript
复制
$u->changes

代码语言:javascript
复制
$u->changes->toarray() 

但两者都返回null。

如何才能获取更改后的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-26 01:38:56

能言善辩的模型有两个受保护的数组,$original$changes,它们分别包含从存储中获取的属性和已修改的属性。

因此,您可以使用getOriginal()getChanges()来比较它们之间的差异。

代码语言:javascript
复制
$model = Model::createOrUpdate([...]);

// wasRecentlyCreated is a boolean indicating if the model was inserted during the current request lifecycle.
if (!$model->wasRecentlyCreated) {
   $changes = $model->getChanges();
}
票数 16
EN

Stack Overflow用户

发布于 2018-11-22 10:33:29

这将创建一个数组,该数组将包含原始属性值及其更改后的值:

代码语言:javascript
复制
if (!$model->wasRecentlyCreated) {
    $original = $model->getOriginal();
    $changes = [];

    foreach ($model->getChanges() as $key => $value) {
        $changes[$key] = [
            'original' => $original[$key],
            'changes' => $value,
        ];
    }
}

例如:

代码语言:javascript
复制
(
    [first_name] => [
        [original] => Kevinn
        [changes] => Kevin
    ]
    [website] => [
        [original] => google.com
        [changes] => google.ca
    ]
)
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51028944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档