【问题标题】:Laravel - How to check which column is updated using ObserversLaravel - 如何检查使用观察者更新的列
【发布时间】:2018-04-18 10:35:21
【问题描述】:

我只想知道使用观察者更新的一列

<?php


namespace App\Observers;


use App\OnsiteHistory;

class OnsiteHistoryObserver
{

    public function updated(OnsiteHistory $onsiteHistory)
    {
        if ($onsiteHistory->status == 'accepted'){

           // send email  

        }
    }
}

我只想检查状态列是否已更新。 我该怎么做?

【问题讨论】:

  • updating 事件而不是updated 中检测更新内容很容易。在您的情况下,如果您没有在某处手动存储已更新的值,则无法从模型本身获取它,因为您没有在某处存储历史记录。
  • 我可以使用$onsiteHistory-&gt;isDirty(['status'])找到更新的列
  • 很高兴知道! :D

标签: php laravel laravel-5 eloquent


【解决方案1】:

经过一番研究并查看 Laravel 源代码后,我找到了方法。

Laravel Elouqont 提供了一个方法isDirty([])

namespace App\Observers;


use App\OnsiteHistory;

class OnsiteHistoryObserver
{

    public function updated(OnsiteHistory $onsiteHistory)
    {
        if ($onsiteHistory->isDirty(['status']) &&  strtolower($onsiteHistory->status) == 'accepted'){

       dd('I am updated')


        }
    }
}

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2021-08-04
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 2021-06-30
    • 2021-01-23
    相关资源
    最近更新 更多