![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 13:54 |