jeudi 19 juillet 2018

laravel model event called multiple times

BaseModel.php

abstract class BaseModels extends Model implements Auditable {

    public function needAudit() {
        return true;
    }

    public function __construct() {
        static::deleting(function ($m) {
            if ($m->needAudit() === true && !app()->runningInConsole() && defined('IN_ADMIN') && IN_ADMIN === true) {
                $admin = \Auth::guard('admin')->user();

                AuditRecords::addLog($admin->username . ' deleted ' . $m->getAuditDescription(), 'delete_' . $m->table, AuditRecords::OPERATION_DELETE, $m);
            }
        });

        static::created(function ($m) {
            if ($m->needAudit() === true && !app()->runningInConsole() && defined('IN_ADMIN') && IN_ADMIN === true) {
                $admin = \Auth::guard('admin')->user();

                AuditRecords::addLog($admin->username . ' created ' . $m->getAuditDescription(), 'create_' . $m->table, AuditRecords::OPERATION_CREATE, $m);
            }
        });

        static::updated(function ($m) {
            if ($m->needAudit() === true && !app()->runningInConsole() && defined('IN_ADMIN') && IN_ADMIN === true) {
                if ($m->exists() && $m->isDirty()) {
                    $admin = \Auth::guard('admin')->user();

                    AuditRecords::addLog($admin->username . ' edited ' . $m->getAuditDescription(), 'edit_' . $m->table, AuditRecords::OPERATION_UPDATE, $m);
                }
            }
        });
    }
}

Country.php

class Country extends BaseModels {

    public function getAuditDescription() {
        return getClassName($this) . ' ' . $this->country_name_en;
    }

    const STATUS_INACTIVE = 0;
    const STATUS_ACTIVE = 1;

    protected $table = 'country';
}

Auditable.php

<?php

namespace App\Models;

interface Auditable {
    public function getAuditDescription();
    public function needAudit();
}

trying to do some auto audit log for all admin route, using the laravel eloquent event deleting, created and updated, but \App\Models\Country.php log for 3 times on every save, \App\Models\Bank.php log for 7 times on every save, result in the attach image

enter image description here



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire