public function comments() { return $this->hasMany('App\Models\Comment'); }
A komentarz ma relację do autora. I teraz chciałbym przy każdym wywołaniu $article->comments wyświetlić komentarze tylko z autorem, który nie jest usunięty.
Klucze obce rozwiązują fajnie sprawę ale mamy tu problematyczny softdeleting tak więc wyświetlają się komentarze także od ludzi, których w teorii już nie ma.
Czy da się to osiągnąć na samym poziomie deklarowania relacji. Oczywiście znam metody whereHas lub filtrowanie kolekcji ale to już muszę robić świadomie i za każdym razem, a $article->comments jest w wielu miejscach w różnych kontekstach (np. $article->comments->count()).
edit: To było prostsze niż myślałem. Nie sądziłem, że whereHas można wywołać na obiekcie Relacji ale można więc wystarczy:
return $this->hasMany('App\Models\Comment')->whereHas('author');