2015-03-25 148 views
1

我有一家公司和一個地址模型。關係是1-1。爲了簡化,我將使用存儲庫省略代碼。爲什麼laravel不會觸發相關的模型事件?

在公司模型我有這樣的mutator:

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

當我更新我公司與作爲地址的屬性的數組「地址」屬性填充它。更新本身工作正常。

在地址模型我有這樣的:

public static function boot() 
    { 
     parent::boot(); 

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

我已經嘗試了不同的活動,如創建/更新,但他們只只有當我創建一個新的公司,這樣的地址的工作原理:

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

在這種情況下,我可以捕捉事件,但是當我嘗試更新地址時,儘管它實際上得到更新,事件不會觸發。

基本上我只需要對地址進行地理編碼,當我更新它,並把緯度/經度值。

感謝

更新 其實我注意到,當我使用更新方法沒有事件被觸發。如果我使用save(),那麼一切都沒問題。

回答

0

如果您想要在creatingupdating方法的一個雄辯模型中做一些事情,您可以使用saving方法。試試這個:

public static function boot() 
{ 
    parent::boot(); 

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

延伸閱讀: Model Events

+0

我想這一事件也沒有任何反應好像模型被更新 – Victor 2015-03-25 14:09:26

相關問題