我有一个公司和一个地址模型。关系为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(),那么一切都会好起来。
如果您想在雄辩模型的creating
和updating
方法中都做一些事情,可以使用saving
方法。试试这个:
public static function boot()
{
parent::boot();
static::saving(function($address)
{
// inside here you can put your logic
dd('Saving Address');
});
}
进一步阅读:模型事件