hasMany(Simple::class); } public function relationHasOne(): HasOne { return $this->hasOne(Simple::class); } public function relationHasOneWithDefault(): HasOne { return $this->hasOne(Simple::class)->withDefault(); } public function relationBelongsTo(): BelongsTo { return $this->belongsTo(Simple::class); } public function relationBelongsToMany(): BelongsToMany { return $this->belongsToMany(Simple::class); } public function relationBelongsToManyWithSub(): BelongsToMany { return $this->belongsToMany(Simple::class)->where('foo', 'bar'); } public function relationBelongsToManyWithSubAnother(): BelongsToMany { return $this->relationBelongsToManyWithSub()->where('foo', 'bar'); } public function relationMorphTo(): MorphTo { return $this->morphTo(); } public function relationMorphOne(): MorphOne { return $this->morphOne(Simple::class, 'relationMorphTo'); } public function relationMorphMany(): MorphMany { return $this->morphMany(Simple::class, 'relationMorphTo'); } public function relationMorphedByMany(): MorphToMany { return $this->morphedByMany(Simple::class, 'foo'); } // Custom relations public function relationBelongsToInAnotherNamespace(): BelongsTo { return $this->belongsTo(AnotherModel::class); } public function relationBelongsToSameNameAsColumn(): BelongsTo { return $this->belongsTo(AnotherModel::class, __FUNCTION__); } }