为什么laravel不;t火灾相关模型事件


Why laravel doesn't fire related model event?

我有一个公司和一个地址模型。关系为1-1。为了简化,我将省略带有存储库的代码。

在公司模式中,我有这样的突变:

public function setAddressAttribute($value)
{
    $this->address()->update($value);
}

当我更新公司时,我会用"address"属性填充它,这是一个地址属性数组。更新本身运行良好。

在地址模型中,我有这样的:

public static function boot()
    {
        parent::boot();
        static::saved(function($address)
        {
            dd('saved');
        });
    }

我尝试过不同的事件,比如创建/更新,但只有当我创建了一个地址如下的新公司时,它们才有效:

$company->address()->save(new Address($attributes['address']));

在这种情况下,我可以捕捉到事件,但当我尝试更新地址时,尽管它实际上得到了更新,但事件不会触发。

基本上,我只需要在更新地址时对其进行地理编码,并输入lat/lon值。

感谢

更新事实上,我已经注意到,当我使用update方法时,不会触发任何事件。如果我改为使用save(),那么一切都会好起来。

如果您想在雄辩模型的creatingupdating方法中都做一些事情,可以使用saving方法。试试这个:

public static function boot()
{
    parent::boot();
    static::saving(function($address)
    {
        // inside here you can put your logic
        dd('Saving Address');
    });
}

进一步阅读:模型事件