[LR] Relacja z whereHas |
[LR] Relacja z whereHas |
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:
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 -------------------- |
|
|
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
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` |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 02:00 |