Model Observer,不适用于更新?

时间:2016-01-07 18:58:53

标签: php laravel-5 eloquent observer-pattern observers

我在尝试让我的模型观察者工作时遇到了麻烦..它正在按照预期的方式进行创建和删除,但不能用于更新。我猜这个事件永远不会发生。事情就是以完全相同的方式完成。有任何想法吗? 下面,我的观察员。

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';
}

在这里,我的模特课

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));
}

2 个答案:

答案 0 :(得分:4)

如果有人遇到过这个问题,那么事件没有被解雇的原因是因为更新方法只在模型上直接发生更新时触发其事件,因为我使用中间存储库来表示我的模型,它不是& #39;工作。

了解更多详情。 https://github.com/laravel/framework/issues/11777#issuecomment-170388067

答案 1 :(得分:0)

观察者只能在save()方法上工作。而且,它对您通过魔术方法调用的查询生成器的功能无效。因此,在update()和created()观察器上不起作用。