[laravel][symfony] Laravel, działanie modelu |
[laravel][symfony] Laravel, działanie modelu |
2.07.2021, 11:21:16
Post
#1
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Cześć.
Nie rozumiem jednej sprawy i proszę społeczność o nakreślenie co robić Mam problem w zrozumieniu laravela, modeli itp. Ostatnio analizowałem kurs laravela ( z uprzejmości nie podam adresu kursu ) na którym pan jawnie w kontrolerze wykonywał operacje na modelu, coś w deseń poniżej:
Jako że poszukuję pracy jako junior laravel developer to przygotowałem zadanie testowe zgodnie z tym kursem... ale moi rekruterzy napisali mi, że pomieszałem wszystko w kontrolerze itp. Pytanie- jak poprawnie używać kontrolera i modelu ? bo nieco zagmatwałem się w tych elementach. Jak rozumiem, kontroler steruje modelem, model wykonuje operacje ( najczęściej na bazie danych ) i zwraca dane do kontrolera, a ten kontroler dalej przekazuje dane do widoku. Jak powinienem zmodyfikować $user = new User(); aby poprawnie używać frameworka MVC? Proszę o pomoc w zrozumieniu tematu -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
2.07.2021, 12:03:05
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
W wielkim skrocie:
zadanie kontrolera to przechwycic routing, odpalic serwis ktory wykona cala robote i wynik tej roboty przekazac do widoku. Ty w swoim rozwiazaniu cala robote robisz w kontrolerze a powininies robic w Serwisie, ktory kontroler jedynie odpali. ps: jesli jednak szukasz pracy jako junior, to rekruterzy nie powinni sie czepiac twojego rozwiazania. Co najwyzej napisac jak to powinno byc zrobione poprawnie -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
2.07.2021, 13:17:32
Post
#3
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
W wielkim skrocie: zadanie kontrolera to przechwycic routing, odpalic serwis ktory wykona cala robote i wynik tej roboty przekazac do widoku. Ty w swoim rozwiazaniu cala robote robisz w kontrolerze a powininies robic w Serwisie, ktory kontroler jedynie odpali. ps: jesli jednak szukasz pracy jako junior, to rekruterzy nie powinni sie czepiac twojego rozwiazania. Co najwyzej napisac jak to powinno byc zrobione poprawnie Mówisz w serwisie? Ha ha Niewiele mi to mówi, pędzę się dowiedzieć ale temat nie jest zamknięty, można nadal odpowiadać i proponować Choć głupieję jak czytam dokumentację dla insert model laravel : https://laravel.com/docs/8.x/eloquent#inserts
Tutaj też zapis jest realizowany w kontrolerze. O co tu chodzi? Tutaj to zrozumiałem Hi hi https://www.youtube.com/watch?v=93ZhGkFIwbA Dziękuję za uwagę Ten post edytował miccom 2.07.2021, 12:53:05 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
2.07.2021, 14:27:53
Post
#4
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
To co znalazles to nadal jeszcze nie jest Service a Repository.
Ok, to juz jest lepiej ale to jeszcze nie to. Repository wykonuje operacje na twoim modelu i tylko tyle. Service zas robi wszystko na roznych klasach, np. do Service mozesz dodac wysylke maila, logowanie oraz rzecz jasna uzyc w nim Repository oraz wiele innych rzeczy Repository poza tym nie powinien miec wglada do request tylko Service powinien przekazac mu wszystkie nizbedne dane. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
2.07.2021, 14:40:09
Post
#5
|
|
Grupa: Zarejestrowani Postów: 621 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) |
Apropos youtube, https://www.youtube.com/watch?v=Lf_ftXDkWv0
|
|
|
3.07.2021, 13:47:57
Post
#6
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Apropos youtube, https://www.youtube.com/watch?v=Lf_ftXDkWv0 Nie rozumiem o co chodzi Gość tłumaczy takim jak Wy a nie początkującym -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
3.07.2021, 15:29:37
Post
#7
|
|
Grupa: Zarejestrowani Postów: 621 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) |
Chodzi o to że masz controller, w nim odbierasz dane z requesta oraz wysyłasz dane do widoku. W miedzyczasie cos musi sie dziac (kalkulacja danych, generowanie raportu) czyli ogólnie logika danego miejsca. Założenie jest takie, że całą tę logikę wywalasz do osobnej klasy (czyli w tym przypadku nazywamy to serwisem), nic więcej.
|
|
|
3.07.2021, 17:27:20
Post
#8
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 4 Dołączył: 30.05.2017 Ostrzeżenie: (0%) |
Wrzuć kod który wysłałeś rekruterowi, bo zakładam, że ten który pokazałeś w pierwszym poście to jakiś pseudokod (gdzie jest klasa?).
Gdybyś umieścił kod z linii 4-13 w ramach pojedynczej akcji kontrolera, to jak na początkującego juniora nie byłoby tragedii. To co mi się rzuca w oczy to możliwość użycia frameworkowego klienta http zamiast file_get_contents/json_decode (w ramach chwalenia się znajomością narzędzia) i tak jak piszą koledzy wyżej przeniesienia samego zapytania do API oraz akcji tworzenia oraz wypełniania modelu do oddzielnych serwisów (dedykowanych tym zadaniom klas). |
|
|
3.07.2021, 17:52:34
Post
#9
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Wrzuć kod który wysłałeś rekruterowi, bo zakładam, że ten który pokazałeś w pierwszym poście to jakiś pseudokod (gdzie jest klasa?). Gdybyś umieścił kod z linii 4-13 w ramach pojedynczej akcji kontrolera, to jak na początkującego juniora nie byłoby tragedii. To co mi się rzuca w oczy to możliwość użycia frameworkowego klienta http zamiast file_get_contents/json_decode (w ramach chwalenia się znajomością narzędzia) i tak jak piszą koledzy wyżej przeniesienia samego zapytania do API oraz akcji tworzenia oraz wypełniania modelu do oddzielnych serwisów (dedykowanych tym zadaniom klas). Proszę bardzo https://github.com/miccom1977/postInLaravel Chociaż bardziej chodzi mi o to, ze nawet w manualach odnosi się do modelu implementujac model... a teraz niby nie tak to ma być? To po co w manualu dla laravela w ogóle przedstawiać błędne podejścia? Ten post edytował miccom 3.07.2021, 17:54:51 -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
4.07.2021, 14:49:23
Post
#10
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 4 Dołączył: 30.05.2017 Ostrzeżenie: (0%) |
W dokumentacji przedstawiane są uproszczone przykłady zastosowania poszczególnych elementów frameworka, które mają demonstrować koncepty. W życiu codziennym, aplikacje często rozwiązują bardziej złożone problemy które wymagają napisania większej ilości kodu (tak jak w Twoim przypadku). Wtedy aby tworzyć zwięzły, czytelny i zrozumiały kod stosuje się zasady KISS, DRY, SOLID (Google) które narzucają m.in. logiczne wydzielanie jego fragmentów odpowiadających za pojedyncze procesy (np. zamykając je w odseparowanych od siebie serwisach).
Jeśli nie znasz jeszcze tych zasad/nie są one dla Ciebie intuicyjne, sugeruję zastosowanie bardzo prostej zasady która "na oko" powie Ci, czy powinieneś rozważyć refactoring: jeśli kod Twojej funkcji/metody nie mieści się w całości na ekranie (tj. musisz ją przewijać) to znaczy, że należy ją podzielić na kilka metod w ramach klasy lub sprawdzić, czy przypadkiem sama w sobie nie wykonuje zbyt wielu czynności - wtedy można opakować je w oddzielne klasy (serwisy), a w metodzie macierzystej użyć ich wywołań. Na przykładzie metody kontrolera loadDataToBase() z przesłanego przez Ciebie projektu, można wydzielić:
|
|
|
16.07.2021, 17:53:07
Post
#11
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
No muszę to zrozumieć
Nie kumam nic- ale chcę Funkcja:
I teraz mam to podzielić na serwisy. Tworzę katalog services i tam dodaję poszczególne klasy? katalog services tworzę w katalogu App/ czy w App/Http/ ? -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
17.07.2021, 19:01:38
Post
#12
|
|
Grupa: Zarejestrowani Postów: 821 Pomógł: 111 Dołączył: 11.09.2006 Skąd: Biała Podlaska Ostrzeżenie: (0%) |
Ogólnie, ten kod który wkleiłeś to jakaś tragedia... propnowałbym ten wątek przenieśc jednak do Przedszkola, wtedy można by było wytknąć wszystkie błędy które należy koniecznie poprawić.
-------------------- |
|
|
20.08.2021, 07:48:10
Post
#13
|
|
Grupa: Zarejestrowani Postów: 493 Pomógł: 8 Dołączył: 7.07.2007 Skąd: Tychy Ostrzeżenie: (0%) |
Ogólnie, ten kod który wkleiłeś to jakaś tragedia... propnowałbym ten wątek przenieśc jednak do Przedszkola, wtedy można by było wytknąć wszystkie błędy które należy koniecznie poprawić. Można przenieść do Przedszkola ale tam że napiszesz co jest źle ? bo pisać tragedia- i nie wyjasnić dlaczego tragedia- to zwykłe trollowanie -------------------- Jeśli pomogłem- kliknij POMÓGŁ-przyda się ;)- jeśli piszę bzdury- pisz pod postami. Poprawię się.
PISZĘ POPRAWNIE PO POLSKU! |
|
|
26.08.2021, 05:41:52
Post
#14
|
|
Grupa: Zarejestrowani Postów: 515 Pomógł: 63 Dołączył: 27.08.2012 Ostrzeżenie: (0%) |
ale co tutaj wyjaśniać, na tym polega cała sztuka pisania dobrego kodu, doświadczenia i wiedzy za którą ludzie zdobywają latami i trzepią za to sporo hajsu. Wyjaśnienie Tobie co robisz źle w tym fragmencie kodu nie zamyka się tylko na jego fragmencie, to o wiele bardziej złożony temat który obecnie dla Ciebie jest czystą abstrakcją - biorąc pod uwagę że chłopaki wyżej już próbowali Ciebie nakierować ale nic z tego nie rozumiesz. Nie da się Tobie pomóc z kilku komentarz tego tematu. Musisz zwyczajnie w świecie nabrać doświadczenia, nie wnikaj tylko pisz ile wlezie - każdy zaczynał tak jak Ty teraz.
|
|
|
13.09.2021, 17:08:43
Post
#15
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 5 Dołączył: 20.05.2019 Ostrzeżenie: (0%) |
Można przenieść do Przedszkola ale tam że napiszesz co jest źle ? bo pisać tragedia- i nie wyjasnić dlaczego tragedia- to zwykłe trollowanie Pomijając dodatkowe warstwy, biorąc tylko pod uwagę logikę to koniecznie poczytaj i zrozum: - https://laravel.com/docs/8.x/collections (opcjonalnie, zamiast foreach) - https://laravel.com/docs/8.x/eloquent#mass-assignment (nie masz najmniejszej potrzeby tworzyć modelu tak jak to robisz) - https://laravel.com/docs/8.x/eloquent-relat...e-create-method (j/w korzystaj z relacji przy tworzeniu) - poczytaj o standardach formatowania kodu https://www.php-fig.org/psr/ - https://laravel.com/docs/8.x/migrations#introduction (linijki 3-8 świadczą ewidentnie o złych migracjach/fk) - https://pl.wikipedia.org/wiki/SOLID_(progra...anie_obiektowe) To co napisałeś powinno być max w ~10 linijkach na oko + rozbite na mniejsze części i umieszczone w odpowiednich miejscach. Ten post edytował netir 13.09.2021, 17:17:52 |
|
|
26.05.2023, 08:36:41
Post
#16
|
|
Grupa: Zarejestrowani Postów: 47 Pomógł: 2 Dołączył: 17.04.2017 Skąd: 127.0.0.1 Ostrzeżenie: (0%) |
Cytat I teraz mam to podzielić na serwisy. Tworzę katalog services i tam dodaję poszczególne klasy? katalog services tworzę w katalogu App/ czy w App/Http/ ? Ja dopiero zacząłem uczyć się Laravela, jestem nim po prostu zafascynowany. I właśnie chciałem zapytać gdzie powinna być trzymana logika aplikacji? Przykładowo klasa generująca imieniny. Repositories, service container? Myślę że przyda się kilku osoba które trafią na ten wątek: Dobre praktyki Laravel Ten post edytował StreetFighter 10.11.2022, 08:28:07 |
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 14:20 |