Korzysta ktoś z lighthouse ? może mi ktoś powiedzieć jak utworzyć własny resolver do pól ? bo dokumentacja jest tak z d--y że tam praktycznie nic nie ma...
@Radaka: jeżeli potrzebujesz po prostu np. transformować wartość pola w jakiś uniwersalny sposób to zrób klasę która implementuje FieldResolver i dziedziczy po BaseDirective - metody do implementacji to name() i resolveField($fieldValue). Następnie w tej drugiej metodzie zrób tak:
return $fieldValue->setResolver(function ($root) { return $this->something($root); } W $root masz w takiej sytuacji model o który idzie odpytanie. Tak stworzoną klasę umieszczasz tam gdzie trzeba np. w folderze dyrektyw (ścieżki z
@aso824: Potrzebuje zmodyfikować obiekt, bo potrzebuje na modelu wykonać dodatkowe operacje na metodach a nie tylko zwracać same pola, chciałbym uzyskać coś na wzór tego co mogę uzyskać w resources np:
@Radaka: images to relacja jak zgaduję, więc dyrektywa; excerpt uzyskasz robiąc własną dyrektywę tak samo jak i can_view - co swoją drogą IMO jest mało zgodne z filozofią GraphQLa samego w sobie (to nie jest po prostu inna wersja RESTa, to jest inne podejście do tego jak przechodzą dane). Co do dyrektyw to spójrz w te istniejące w vendorze, napisanie własnej dyrektywy jest stosunkowo proste a uzyskasz dokładnie to co
@aso824: images to nie tylko relacja bo jeszcze kilka metod jest wykonywanych, reszta to tylko przykład żeby pokazać co mniej więcej chciałem uzyskać, walcze właśnie z query, tylko po raz kolejny w dokumentacji nie ma nic co by mogło mnie naprowadzić jak to poprawnie zrobić...
@Radaka: do fragmentów z większą logiką zrób własną dyrektywę w stylu resolvera jak dałem wyżej i masz gotowe - queries dosyć rzadko trzeba pisać, głównie gdy potrzebna jest operacja niezwiązana z modelem. Natomiast mutacje to niestety chyba w 90% wypadkach własne, przynajmniej mi się nie udało tego ładnie wyrzeźbić dyrektywami, ale dziedziczenie po generycznej mutacji zdało egzamin.
@aso824: Zanim napisałem na wypoku to przeorałęm całą dokumentacje + internety żeby nie tracić czasu ludzi, ale koniec końców udało mi się w larvie uzyskać to co chciałem, dzięki za poświęcony czas
#laravel
FieldResolveri dziedziczy poBaseDirective- metody do implementacji toname()iresolveField($fieldValue). Następnie w tej drugiej metodzie zrób tak:return $fieldValue->setResolver(function ($root) { return $this->something($root); }W
$rootmasz w takiej sytuacji model o który idzie odpytanie. Tak stworzoną klasę umieszczasz tam gdzie trzeba np. w folderze dyrektyw (ścieżki zpublic function toArray($request)
{
return [
'id'
imagesto relacja jak zgaduję, więc dyrektywa;excerptuzyskasz robiąc własną dyrektywę tak samo jak ican_view- co swoją drogą IMO jest mało zgodne z filozofią GraphQLa samego w sobie (to nie jest po prostu inna wersja RESTa, to jest inne podejście do tego jak przechodzą dane). Co do dyrektyw to spójrz w te istniejące w vendorze, napisanie własnej dyrektywy jest stosunkowo proste a uzyskasz dokładnie to coDokumentacja do queries jest na samym początku - https://lighthouse-php.com/master/the-basics/fields.html
Jeżeli nie czytałeś jeszcze