Model Observer, not working for update?

2019-09-08 15:39发布

问题:

Im having trouble trying to get my model observer to work.. It is working as expected for create and deleted, but not for updating. Im guessing the event never fires. The thing is all of then are being done exactly the same way. Any ideas? Below, my observer.

class GenericObserver extends AbstractObserver {

protected $events;

public function __construct(Dispatcher $dispatcher){
    $this->events = $dispatcher;

}

public function saved($model) {
    dd($this->events);

    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    dd($model);
}

public function deleted($model) {
    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    echo($model->getTable());
    dd($model->getKeyName());

}

public function updated($model) {


    $user_id = Auth::user()->usr_id;
    $user_nome = Auth::user()->usr_nome;
    $user_email = Auth::user()->usr_email;

    dd($model);

}

public function saving($model){
    echo 'Saving';
}

public function deleting($model){
    echo 'Deleting';
}

public function updating($model){
    echo 'Updating';
}

And here, my model class

Aplicacao extends Model {
protected $table = 'gst_aplicacoes';

protected $primaryKey = 'app_id';

protected $fillable = ['app_nome', 'app_key', 'app_observacao'];

public static function table() {
    $model = new static;
    return $model->getTable();
}

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


    Aplicacao::observe(new GenericObserver(new Dispatcher));
}

回答1:

If anyone ever faces this issue, the reason the event was not firing was because the update method, only fire its events when the update happens directly on the model, since i was using an intermediary repository to represent my model, it wasn't working.

for more details. https://github.com/laravel/framework/issues/11777#issuecomment-170388067