Integracja aplikacji Laravel z MongoDB używając Doctrine

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źć :/

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.

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:

$object = (object) $array;
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.

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ą.

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ą.

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1