解决 Laravel 模型中的 increment 和 decrement 方法不触发 observers

yufei       3 年, 6 月 前       769

解决 Laravel 模型中的 increment 和 decrement 方法不触发 observers

你要做的,只是将下面的代码加到模型文件里,比如 account.php

<?php
    protected function incrementOrDecrement($column, $amount, $extra, $method)
    {
        $this->{$column} = ($method == 'increment' ? $this->{$column} + $amount : $this->{$column} - $amount);
        $this->fireModelEvent('saving', false);
        $this->{$column} = ($method == 'increment' ? $this->{$column} - $amount : $this->{$column} + $amount);
        $result = parent::incrementOrDecrement($column, $amount, $extra, $method);
        $this->fireModelEvent('saved', false);
        return $result;
    }

当然了,更好的方法是

    public function increment($column, $amount = 1, array $extra = [])
    {
        $this->$column = $this->$column + $amount;

        $this->save();
    }

    public function decrement($column, $amount = 1, array $extra = [])
    {
        $this->$column = $this->$column - $amount;

        $this->save();
    }
}
目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.