【问题标题】:Model Observer, not working for update?模型观察者,无法更新?
【发布时间】:2016-04-12 07:28:26
【问题描述】:

我在尝试让我的模型观察器工作时遇到了麻烦。它在创建和删除时按预期工作,但在更新时却没有。我猜这个事件永远不会触发。事情是所有的事情都是以完全相同的方式完成的。有任何想法吗? 下面,我的观察者。

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

【问题讨论】:

  • 我没有看到“更新”。在“更新”中,$model 没有变化。
  • 对不起,我不太明白,我想做的是,在更新发生时存储模型的数据,事情是,创建和删除都正常工作,两者都实现了同样的方式,但更新的事件根本不会触发

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


【解决方案1】:

如果有人遇到过这个问题,事件没有触发的原因是因为更新方法,只有当更新直接发生在模型上时才会触发它的事件,因为我使用中间存储库来表示我的模型,它是不工作。

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

【讨论】:

【解决方案2】:

观察者只使用 save() 方法。它不适用于您通过魔术方法调用的查询生成器的功能。所以在 update() 和 created() 观察者是行不通的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2023-04-10
    • 2016-03-04
    相关资源
    最近更新 更多