MorphMany(GroupTransaction::class, 'group'); } /** * @return HasMany */ public function groupTransactions(): HasMany { return $this->hasMany(GroupTransaction::class); } /** * @return MorphMany */ public function documents(): morphMany { return $this->morphMany(Document::class, 'owner'); } /** * @return BelongsTo */ public function currency(): BelongsTo { return $this->BelongsTo(Currency::class, 'currency_id', 'id'); } /** * @return HasManyDeep */ public function transferFees(): HasManyDeep { return $this->HasManyDeep(Transaction::class, [GroupTransaction::class, Transaction::class.' as alias'], ['group_id', ['owner_type', 'owner_id'], ['owner_type', 'owner_id']], ['id', null, null]); } /** * @return BelongsTo */ public function issuerCompany(): BelongsTo { return $this->BelongsTo(CompanyModule::class, 'issuer', 'id'); } /** * @return BelongsTo */ public function receiverCompany(): BelongsTo { return $this->BelongsTo(CompanyModule::class, 'receiver', 'id'); } /** * @return BelongsTo */ public function original_currency(): BelongsTo { return $this->BelongsTo(Currency::class, 'original_currency_id', 'id'); } /** * @return hasOne */ public function payment() { return $this->hasOne(Transaction::class, 'payment_reference', 'reference'); } }