2014-05-22 73 views
0

我有以下型號:模型事件不工作

class ProjectTwitterStatus extends Eloquent { 

    protected $table = 'project_twitter_statuses'; 

    protected $softDelete = true; 

    protected $guarded = array('id'); 

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

     ProjectTwitterStatus::deleting(function($projectTwitterStatus) 
     { 
      $projectTwitterStatus->deleted_by = Auth::user()->id; 
     }); 
    } 

    public function twitterStatus() { 
     return $this->belongsTo('TwitterStatus'); 
    } 

    public function twitterRetweet() { 
     return $this->belongsTo('TwitterRetweet','twitter_status_id','twitter_status_id'); 
    } 

    public function project() { 
     return $this->belongsTo('Project'); 
    } 
} 

某處在我的應用程序中的項目是使用下面的語句之一刪除:

ProjectTwitterStatus::find($id)->delete(); 
ProjectTwitterStatus::whereIn('twitter_status_id', $twitterStatusIds)->delete(); 

我可以在數據庫中的項目看已被(軟)刪除。但是,deleted_by列未填充。

有誰知道我在做什麼錯?

+0

嘗試把父::啓動()的ProjectTwitterStatus後::刪除()函數 - 這是否解決了嗎? – Laurence

+0

爲deleted_by您可以嘗試我的解決方案https://github.com/fico7489/laravel-revisionable-upgrade – fico7489

回答

1

嘗試使用Late Static Binding,像以下事項

class ProjectTwitterStatus extends Eloquent { 

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

     static::deleting(function($projectTwitterStatus) 
     { 
      $projectTwitterStatus->deleted_by = Auth::user()->id; 
     }); 
    } 

}