Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [LR] Relacja z whereHas
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Powiedzmy, że mamy model artykuły i w nim:
  1. public function comments()
  2. {
  3. return $this->hasMany('App\Models\Comment');
  4. }


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');


Ten post edytował markonix 25.03.2018, 21:05:11
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Rozumiem w pewnym stopniu zasadność takiej struktury, ale jakoś przejrzystszy (może krótszy po prostu) mi się wydaje string, w dokumentacji Laravel też taki format jest na przykładach.
Dużo nie tracę bo STORM także pozwala na nawigacje po takiej klasie wprowadzonej jako string (jedynie nie podpowiada przy wpisywaniu).

Ten post edytował markonix 28.03.2018, 01:03:56
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 13:54