belongsTo('App\Models\Account'); } public function user() { return $this->belongsTo('App\Models\User'); } public function vendor() { return $this->belongsTo('App\Models\Vendor')->withTrashed(); } public function getName() { return ''; } public function getEntityType() { return ENTITY_EXPENSE; } public function apply($amount) { if ($amount > $this->balance) { $applied = $this->balance; $this->balance = 0; } else { $applied = $amount; $this->balance = $this->balance - $amount; } $this->save(); return $applied; } } Expense::creating(function ($expense) { $expense->setNullValues(); }); Expense::created(function ($expense) { event(new ExpenseWasCreated($expense)); }); Expense::updating(function ($expense) { $expense->setNullValues(); }); Expense::updated(function ($expense) { event(new ExpenseWasUpdated($expense)); });