BelongsTo(Country::class, 'country_id', 'id'); } /** * @return BelongsTo */ public function state(): BelongsTo { return $this->BelongsTo(State::class, 'state_id', 'id'); } /** * @return BelongsTo */ public function district(): BelongsTo { return $this->BelongsTo(District::class, 'district_id', 'id'); } /** * @return MorphTo */ public function owner(): morphTo { return $this->morphTo(); } /** * @param Builder $query * @return Builder */ public function scopeDefaultAddress(Builder $query) { return $query->where('default', true); } /** * @return MorphMany */ public function contacts(): morphMany { return $this->morphMany(Contact::class, 'owner'); } /** * @return MorphMany */ public function remarks(): morphMany { return $this->morphMany(Remark::class, 'owner')->whereNull('type'); } /** * @return MorphMany */ public function addressExtraFields(): MorphMany { return $this->morphMany(Remark::class, 'owner')->where('type', RemarkTypes::ADDRESS_EXTRA_COLUMNS); } }