Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [LR] Relacja z whereHas
markonix
post 25.03.2018, 20:37:15
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
Pyton_000
post 28.03.2018, 08:07:37
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Uzywając notacji obiektowej możesz zaimportować namespace i zostanie Ci wtedy samo `Comment::class` co jest którtsze wg. Twojego argumentu wink.gif

Kolejny ciekawy argument to jest taki że jeśli kiedyś ci się przytrafi autmoatyczna refaktoryzacja to bez problemu wyłapie takie miejsca i sobie edytor z tym poradzi, string nie koniecznie.
Ale to wszystko raczej kosmetyczne zmiany.

Ot po prostu przyjęło się używać notacji `::class`
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 02:00