发生更新事件时发送通知

时间:2020-03-18 13:57:58

标签: php laravel-5.8

我可以发誓我的代码到目前为止一直有效。我正在观察Item模型,并且想在status列为udpdate并将其设置为loaded时随时发送电子邮件通知。为此,我使用了isDirty()方法,但是由于没有邮件发送,我的代码似乎无法正常工作。这是我的代码

use App\Notifications\ItemAlert;
use App\User;
use App\Item;


class ItemObserver
{
    public function updated(Item $item)
    {
        // check if product status was updated to loaded
        if ($item->isDirty('status' === 'Loaded')) {

            // notify all users
            $users = User::all();

            foreach ($users as $user) {
                $user->notify(new ItemAlert($user, $item));
            }
        }
    }
}

我需要帮助才能使其正常工作。

1 个答案:

答案 0 :(得分:0)

解决了!显然isDirty()需要另一个条件来检查缺少的条件。正确的代码应该是

public function updated(Item $item)
    {
        // check if product status was updated to loaded
        if ($item->isDirty('status' === 'Loaded') && ($item->status === 'Loaded')) {

            // notify all users
            $users = User::all();

            foreach ($users as $user) {
                $user->notify(new ItemAlert($user, $item));
            }
        }
    }

我希望这对遇到此解决方案的人有所帮助。