第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Eloquent - 比較 save() 模型后的屬性變化

Eloquent - 比較 save() 模型后的屬性變化

PHP
慕雪6442864 2023-09-22 16:40:04
我正在我的應(yīng)用程序中構(gòu)建一個(gè)審核系統(tǒng),并且我想比較save()方法后 Eloquent 模型屬性的變化。這是我需要的示例:$person = Person::find(1); //Original data: $person->name -> 'Original name', $person->age -> 22$person->name = 'A new name';$person->age = 23;$person->save();//At this point, I need to get an array like this (only with the attributes that have changed):[  'age' => ['old' => 22, 'new' => 23],  'name' => ['old' => 'Original name', 'new' => 'A new name']]我知道 Eloquent 已經(jīng)有一些函數(shù),如isDirty()、getDirty()和getChanges(),但是這個(gè)方法只返回新值,我需要將舊值和新值存儲(chǔ)在我的審計(jì)表中。有沒有什么方法可以做到這一點(diǎn),而不需要“克隆”我的變量,然后比較它以獲取更改?
查看完整描述

4 回答

?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

在保存模型之前,您可以訪問原始(舊)屬性值,例如: $person->original。

此外,您可以調(diào)用:$person->getChanges()來獲取所有更改的屬性。


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

在Save()函數(shù)之前以及覆蓋第 2 行和第 3 行的變量之前,您可以通過執(zhí)行以下操作獲取舊數(shù)據(jù):


$oldName = $person->name;

$oldAge = $person->age;

然后,保存后,您可以將值插入數(shù)組中,如下所示:


$values = array(

"oldName" => $oldName,

"newName" => "New Name",

"oldAge" => $oldAge,

"newAge" => "New Age",

);

因此,您可以通過執(zhí)行以下操作從數(shù)組中獲取值:


echo $values["oldName"];

echo $values["newAge"];

...


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以在進(jìn)行更改之前克隆新檢索的模型。沿著線的東西


$person = Person::find(1); 

$original_person = cone $person;


// update the person object

// ...

$person->save();

您可以像這樣繼續(xù)構(gòu)建數(shù)組:


[

  'age' => ['old' => $original_person->age, 'new' => $person->age],

  'name' => ['old' => $original_person->name, 'new' => $person->name]

]


查看完整回答
反對(duì) 回復(fù) 2023-09-22
?
白衣染霜花

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以在模型類中的 Updated() 啟動(dòng)函數(shù)中執(zhí)行此操作


class Mymodel extends Model

{

    public static function boot()

    {

        parent::boot();


        self::updated(function ($model) {

            var_dump($model->original);

            var_dump($model->getChanges());

            // Traverse the changed array and save with original values

        });

    }

}


查看完整回答
反對(duì) 回復(fù) 2023-09-22
  • 4 回答
  • 0 關(guān)注
  • 139 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)