Integracja aplikacji Laravel z MongoDB używając Doctrine

Integracja aplikacji Laravel z MongoDB używając Doctrine
O2
  • Rejestracja:około 4 lata
  • Ostatnio:4 dni
  • Postów:508
0

Wie ktoś jak dodać do tej biblioteki obsługę MongoDB http://laraveldoctrine.org/?
Próbuję dodać customowe połączenie, ale nie mogę tego rozgryźć :/


sprawiedliwość do sprawiedliwości społecznej ma się tak jak krzesło do krzesła elektrycznego.
edytowany 1x, ostatnio: Riddle
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:minuta
  • Postów:1875
1

”Engineering is easy. People are hard.” Bill Coughran
edytowany 2x, ostatnio: Charles_Ray
O2
  • Rejestracja:około 4 lata
  • Ostatnio:4 dni
  • Postów:508
0

Klient do mongo zwraca wyniki w tablicy po prostu, a Ja chcę mieć wyniki w obiektach, żeby móc operować na ich metodach.
Jessengers od Laravela nie obsługuje bardziej zaawansowanej agregacji, dlatego chciałem użyć doctrine odm, ale scalanie tego z laravelem to sieczka i pełno featurów przestaje być kompatybilne, jak choćby factory.
Do mongo lepiej jednak chyba użyć express.js, bo jest biblioteka mongoose, która wydaje się w porządku.
Tylko teraz mam znowu problem z ssr.


sprawiedliwość do sprawiedliwości społecznej ma się tak jak krzesło do krzesła elektrycznego.
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Lokalizacja:700m n.p.m.
  • Postów:677
1

No to musisz dokonać konwersji z tablicy na obiekt, przy pomocy np. refleksji: https://www.php.net/manual/en/book.reflection.php

Można też prostacko, tylko wtedy dostaniesz obiekt klasy \stdClass, a o to Ci chyba nie chodzi:

Kopiuj
$object = (object) $array;

DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 2x, ostatnio: TomRZ
O2
  • Rejestracja:około 4 lata
  • Ostatnio:4 dni
  • Postów:508
0

Nie, chodzi mi o obiekty z metodami w stylu, getFullName, która łączy imię i nazwisko, czyli mutatory jak w eloquencie.
Takie rozwiązanie to jest jak budowanie własnego orma, trochę mi szkoda czasu na to.
Teraz próbuję to postawić na expressie z moongose.


sprawiedliwość do sprawiedliwości społecznej ma się tak jak krzesło do krzesła elektrycznego.
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:29 minut
  • Postów:3502
2

Ale mutatory przecież piszesz sam. W końcu jak masz to getFullName() to musisz wskazać, że np. ma być zwracane imie spacja nazwisko itp. Chyba się trochę zakiwałeś. Instancję jakiego obiektu chcesz uzyskać? Jakich metod potrzebujesz? Co oznacza wspomniana słaba agregacja i brak factory?
Określ wszystko po kolei. Nie korzystałem co prawda z biblioteki Jessengers ale w dokumentacji jest info, że obiekty zwracane rozszerzają Model
Zaraz się okaże, że wszystko to kwestia uzycia Mongo w stylu chcę bazę relacyjną.

O2
  • Rejestracja:około 4 lata
  • Ostatnio:4 dni
  • Postów:508
0

Chyba się trochę zakiwałeś

Chyba nie.
Chcę mieć instancje każdego rodzaju dokumentu i embed dokumentu, czyli dokument user to obiekt User itd.

Jakich metod potrzebujesz?

Co mam Ci wypisać wszystkie 500 metod, jakich mam zamiar użyć w tych obiektach w projekcie?

Co oznacza wspomniana słaba agregacja i brak factory?

Nie słaba, tylko niezaawansowana, nie dodasz dwóch lookapów kilku unwindów i tak dalej używając scopów w Jessengers, zrobisz to tylko używając raw.
Brak factory tyczyło się sklejania doctrine odm z laravelem.

dokumentacji jest info, że obiekty zwracane rozszerzają Model

To prawda, ale modele Eloquenta są wolne, przy większej ilości relacji i zwróceniu większej liczby wyników.

Zaraz się okaże, że wszystko to kwestia uzycia Mongo w stylu chcę bazę relacyjną.

Nie mierz ludzi swoją miarą.


sprawiedliwość do sprawiedliwości społecznej ma się tak jak krzesło do krzesła elektrycznego.
edytowany 1x, ostatnio: omenomn2
TR
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Lokalizacja:700m n.p.m.
  • Postów:677
0
omenomn2 napisał(a):

To prawda, ale modele Eloquenta są wolne, przy większej ilości relacji i zwróceniu większej liczby wyników.

Dlatego używam ORM Phalcona który, jak cały framework, jest napisany w C i dołączany do PHP jako biblioteka. Kilka razy większa prędkość w porównaniu do ORM napisanych w czystym PHP.

Zobaczyć np. https://github.com/kenjis/php-orm-benchmark i tabelka z wynikami na dole, gdzie w tym teście: Phalcon jest 15 razy szybszy niż Doctrine, i 5 razy szybszy niż Eloquent.

Co prawda jest to już dość stare, ale niewiele się zmieniło do tego czasu.

Można znaleźć też inne benchmarki - wszędzie ORM Phalcona bije na głowę Doctrine i Eloquent.


DRY > SOLID (nie bierz tego zbyt poważnie)
edytowany 6x, ostatnio: TomRZ

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.