belongsTo('App\Models\Account'); } /** * @return mixed */ public function user() { return $this->belongsTo('App\Models\User')->withTrashed(); } /** * @return mixed */ public function invoice() { return $this->belongsTo('App\Models\Invoice')->withTrashed(); } /** * @return mixed */ public function client() { return $this->belongsTo('App\Models\Client')->withTrashed(); } /** * @return string */ public function getName() { return ''; } /** * @return string */ public function getRoute() { return "/credits/{$this->public_id}"; } /** * @return mixed */ public function getEntityType() { return ENTITY_CREDIT; } /** * @param $amount * * @return mixed */ 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; } } Credit::creating(function ($credit) { }); Credit::created(function ($credit) { event(new CreditWasCreated($credit)); });